🎉 Celebrating 25 Years of GameDev.net! 🎉
Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!
![A Few Farewells](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
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 th…
![Code Reuse In Actual Practice](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
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 cas…
![Source-Level Debugging For Epoch Programs](https://github.com/apoch/epoch-language/raw/master/Images/Screenshots/Debugging-VS2015-Source-Breakpoint.png&key=c8828dfa79f49187858c655e41d2d1e28b54f7a9e9d0b170e36f37810ea34ece)
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 feature…
![Using Poison to Reverse Engineer Code](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
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 furthe…
![Using Poison to Reverse Engineer Code](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
Recently IaEUR(TM)ve been working on a rather difficult task, namely creating PDB debug database files from the href="https://github.com/apoch/epoch-language">E…
![Debugging Information Success](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
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 correctl…
![Debugging Information Success](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
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…
![Debugging Epoch Programs](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
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…
![Debugging Epoch Programs](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
My recent adventures in self-hosting the 64-bit Epoch compiler have led me to a significant conclusion: it isnaEUR(TM)t worth trying to self-host a compiler when you canaEUR(TM)t debug the target language.
A much better use of my time would be to improve the Read more in The Bag of Holding
![Epoch 64-bit compiler progress](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
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,…
![Epoch 64-bit compiler progress](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
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 it…
![Epoch 64-bit self-hosting progress](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
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…
![Epoch Code-Generation Update](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
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…
![Epoch Code-Generation Update](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
A few minutes ago, the first 64-bit self-hosted compiler for Epoch finished the code-generation processaEUR|aEUR' 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 didnaEUR(TM…
![Epoch 64-bit self-hosting progress](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
For a decent while now, IaEUR(TM)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, IaEUR(TM)m using a modified 32-bit compiler which generates 64-bit binaries. Once a wo…
![Welcome to the Bag of Holding](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
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 t…
![Welcome to the Bag of Holding](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
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, hereaEUR(TM)s a sn…
![On Embedding General-Purpose Scripting Languages](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
![MMOs! Y u no EZ?](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
![Fun with templates. "Fun." Ha, ha.](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
formula.Create() .Set(0.0f) .AddWithWeight(some_data_source, 0.5f) .Multi…
![Stupid bit rot](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
I had been mucking around for a little while when it came time to compile and test my changes. Everything seemed to build …
![More hacking on native executables](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
So far the only thing that works is printin…
![Native Binary Project: Day Whatever](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
![Rewrite ALL the things!](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
The current runtime infrastructure for Epoch is precarious at best, and desperately needs some improvements. There are a number of things I want to do that all happen to coincide nicely with a desire to rewrite the runtime system:
- Dest…
![Slimming down the Epoch runtime and improving program start times](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
![Epoch Mailing List](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
Here's the link: clicky. Or you can email epoch-language@googlegroups.com to accomplish the same thing.
It should be open to anyone to come an…
![Three toads and the spit of a badger](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
//// How things look today//type Optional : T | nothingTest : integer x{ print(cast(string, x))}Test : nothing{ print("Nothing")}entrypoint …
![Watching syntax evolve](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
I still really like keeping tasks as the si…
![Epoch Release 15 is now available](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
I didn't get a ton of votes, but all the votes I got were for doing a release sooner rather than later. So here you go, with all the warts and incomplete stuff.
This is mostly a milestone preview for those (few) of you who are really watching the project; think of it as a sneak peek mo…
![Plodding ever onward](https://uploads.gamedev.net/monthly_2017_06/321649.thumb.png.c7e3a9cb02b37a485d4cf9b8c638b8e7.png)
Up until now, all names have been global, and all named entities have existed as peers in the global space. (The exception of course being local variables and function parameters/return slots.)
So far, I've moved al…