Jump to content

  • Log In with Google      Sign In   
  • Create Account


The Bag of Holding



Speculation on semantically-aware version control

Posted by ApochPiQ, 17 October 2013 · 618 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,776 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 · 655 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...


Still rambling about self-hosting

Posted by ApochPiQ, 18 September 2013 · 545 views
Epoch
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 · 597 views
Epoch
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 · 344 views
Epoch
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 · 283 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;...


VINDICATION

Posted by ApochPiQ, 02 August 2013 · 164 views
Epoch
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'...


The ongoing mission

Posted by ApochPiQ, 02 August 2013 · 218 views
Epoch
Nailed down some more quirks in the GC over the past day; unfortunately the last one is a real bugger.

It appears that LLVM's function inlining optimizations cause the GC to go slightly insane. I have yet to ascertain the exact interaction between the inliner and the GC, but disabling all inline functions makes the GC run beautifully.

I also remembered...


More adventures in garbage collection

Posted by ApochPiQ, 31 July 2013 · 223 views
Epoch
One of my least favorite types of bug to unravel is the Ball of Yarn.

A Ball of Yarn is not just one bug. It's a large number of bugs, all in close proximity, which influence and interact with each other. If you pull on one of the threads, one of two things will happen: either you will slowly gain insight into the mess, or (more likely), you'll inadverte...






September 2014 »

S M T W T F S
 123456
78910111213
14 151617181920
21222324252627
282930    
PARTNERS