Jump to content

  • Log In with Google      Sign In   
  • Create Account


The Bag of Holding



Self-hosting the Epoch Compiler: Day Four

Posted by ApochPiQ, 13 December 2013 · 359 views
Epoch, language design
Mostly hammering away on a variety of miscompiles and other tiny bugs tonight; I've squished a ton of problems but they all blur together and I can't clearly remember what all they were.

Almost everything at this stage manifests as the JIT engine vomiting when trying to turn the compiled Epoch program into LLVM bitcode (for eventual translation to machin...


Self-hosting the Epoch Compiler: Day Three

Posted by ApochPiQ, 12 December 2013 · 467 views
Epoch, language design
Sat down and figured out some of the annoying bugs that were left in the compiler, mostly surrounding higher order functions and templates. Rigged up a half-dozen more intrinsics and such, and fired off the compiler for yet another pass on itself.

At 8:02PM PST the compiler successfully completed its first semantic analysis on itself, and began attemptin...


Self-hosting the Epoch Compiler: Day Two

Posted by ApochPiQ, 11 December 2013 · 361 views
Epoch, language design
A large number of the errors emitted by attempting to self-host the compiler have turned out to be caused by a relatively small number of bugs.

Hex literals had no support at all in the compiler, so I added that, and crushed a bunch of errors. I forgot to special-case 0 so anything that evaluated to 0 would not be treated as a number (the compiler assume...


Self-hosting the Epoch Compiler: Day One

Posted by ApochPiQ, 10 December 2013 · 398 views
Epoch, language design
As I've written about here previously, I have a personal goal of self-hosting the Epoch language compiler by the end of 2013. The other night I actually ran the first attempt at passing the compiler source code through itself; the results were underwhelming, to say the least.

My main enemy out of the gate was the garbage collector. I've had a very naive...


Two steps forward, one step sideways

Posted by ApochPiQ, 09 December 2013 · 394 views
Epoch, language design
Over the weekend, I finished the last of the Epoch compiler support for templates. This means that, in theory, the Epoch-implemented compiler is capable of passing every test in the compiler test suite that I use for the C++ version of the compiler.

Unfortunately, I introduced two regressions along the way, which will require some tweaking to get fixed....


Breaking down the Epoch parser

Posted by ApochPiQ, 02 December 2013 · 443 views
Epoch, language design
I've had several requests for a detailed look at how the Epoch compiler parser works, so I figured I'd write up a summary of how everything fits together.

All Epoch programs begin their life in the entrypoint function. The compiler's entrypoint is fairly simple, but it contains a lot of extra stuff related to parsing the command line, opening files, and...


Zeroing in on self-hosting

Posted by ApochPiQ, 30 November 2013 · 363 views
Epoch, language design
After a short break, I'm back to hacking on Epoch again.

Today was pretty productive; made several additions to the parser, added support for a few lingering language features that have been neglected up until now, and fixed a couple minor bugs. The compiler is getting richer, the test suite is expanding at a decent pace, and we're very close to being a...


Speculation on semantically-aware version control

Posted by ApochPiQ, 17 October 2013 · 561 views

Working on a massive code base comes with some interesting challenges.

Consider this scenario, loosely based on a real-world problem we recently encountered at work:
Create a multi-million line code base
Divide this into over two dozen branches for various independent development efforts
On some given branch, find some popularly-edited code that needs re...


Advice to a Young Programmer

Posted by ApochPiQ, 01 October 2013 · 8,547 views

One of the awesome things about ArenaNet is that we run a programming internship program that actually does a phenomenal job of preparing people to work in the games industry. This is accomplished by focusing on three primary principles:
Everything you do will matter. There is no pointless busy-work, no useless coffee-and-bagel fetching type nonsense, an...


So close, and yet so far

Posted by ApochPiQ, 29 September 2013 · 615 views
Epoch
After implementing a bit of value-based pattern matching support, the Epoch compiler is now down to 7 tests remaining before it's ready for self-hosting.

Of those 7, four are related to templates, which will be the last major endeavor required to get self-hosting viable. Templates are scary and will probably eat up a lot of time.

One of those tests is s...






July 2014 »

S M T W T F S
  12345
678 9 101112
13141516171819
20212223242526
2728293031  

Recent Comments

PARTNERS