Jump to content

  • Log In with Google      Sign In   
  • Create Account

The Bag of Holding

Breaking down the Epoch parser

Posted by ApochPiQ, 02 December 2013 · 489 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 · 398 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 · 626 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,794 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 · 658 views
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...

Still rambling about self-hosting

Posted by ApochPiQ, 18 September 2013 · 550 views
Down to 9 tests in the compiler suite that still need some love before they will pass.

For those not keeping score at home, this means that 58 out of 67 compiler tests are passing in the Epoch implementation of the Epoch compiler. In other words, Epoch is getting very, very close to being able to compile itself.

Fun facts:
The compiler in C++, not incl...

Speculation and such

Posted by ApochPiQ, 09 September 2013 · 600 views
Just fooling around.

//// Define an Epoch task that does some work//task Worker :{ // // This specifies a "message signature" which can be // used by and instance of this task to receive data // and commands from other code. // Work : integer a, integer b { // Do some computation integer result = a + b // Reply...

Epoch self-hosting progress

Posted by ApochPiQ, 25 August 2013 · 350 views
So the Epoch compiler is now written end-to-end in Epoch. There is no C++ left in the bootstrapping process aside from the runtime environment which does garbage collection and such.

Sadly this doesn't mean that we're quite to self-hosting just yet. Only about a third of the compiler test suite is passing, and a lot of the remaining work centers around g...

Epoch Optimizations and Garbage Collection

Posted by ApochPiQ, 10 August 2013 · 285 views
Epoch, language design
Following the Great Garbage Collection Debug Spree of the past few weeks, I've noticed a general trend towards bad performance in the realtime raytracer benchmark. At one point it was down to ~6.5FPS peak performance, which is just unacceptably bad.

Profiling revealed two main causes of this slowdown. One is the garbage collector invocations themselves;...


Posted by ApochPiQ, 02 August 2013 · 174 views
Turns out my garbage collection woes are over.

I was strongly suspicious of the inliner in my last post, and it turns out that this hunch was (albeit indirectly) completely correct.

The obvious thing to do when facing a bug like this is to compare the code generated; dump out a listing of the version that works, and a listing of the version that doesn'...

September 2014 »

21 22 2324252627

Recent Entries

Recent Comments