My big project at the moment involves rewriting the Epoch language compiler for what feels like the millionth time.The good news is, instead of yet another C++ incarnation of the compiler, this time around I'm moving towards a self-hosted model, where the compiler for Epoch is itself an Epoch program.As I've detailed elsewhere, I decided to take a somewh...
The Bag of Holding
Bytecode generation is done... more or less. I have a feeling there's a few instructions that are still missing but the compiler test suite passes so obviously there's plenty of stuff that does work...Instead of spamming my journal here with noise about this every couple of days, I'm going to keep a running thought log over on the Epoch wiki .Code genera...
As I've discussed previously, my goal for Epoch Release 15 is to get the compiler self-hosting. In a nutshell, that means that an Epoch program will be used to compile all other Epoch programs, including itself.To do this, I'm working backwards from the compiler back-end first to the lexer/parser last. This allows me to retain all of the language's featur...
Release 14 of the Epoch programming language is now live!That brings us to the pertinent and slightly bothersome question: what will be worked on for Release 15?There are a number of features I'm interested in improving and/or implementing, ranging from object lifetime semantics to parallelism functionality. Strictly speaking, any and all of these featur...
So I've been looking over my past notes and decided that I'm pretty happy with the state of affairs over in Epoch land. The garbage collector is running, tuned for reasonable performance, and successfully keeps the native-code realtime raytracer clamped at a decently small degree of RAM usage.The only thing that really bugs me is that the GC has imposed a...
It was an epic fight, but I finally managed to subdue the last few LLVM garbage collection bugs and get a full test suite pass.I'm kind of tired (it's 5:30AM and I've been running all night) so I'll try to reword that a little more clearly:Epoch is, as of right now, passing all compilation and runtime tests (all 62 of them) with full, aggressive, and accu...
The last major task for release 14 of the Epoch programming language is integrating garbage collection with the LLVM-supported JIT native code generation layer.Ostensibly, LLVM supports hooks for making garbage collection possible. It doesn't take much digging to find out that this is a complete lie, and LLVM is actually pretty terrible at interoperating...
Last night at some unholy hour I finished a first pass at marshaling Epoch data back and forth across C-ABI boundaries. In less annoying terminology, this means that Epoch programs can do things like call Windows API functions, C-compatible APIs in other DLLs, and so on. More interestingly, those APIs can be given Epoch functions as callbacks, so there is...
Today I wrapped up the last Epoch compiler test suite failure besides C-API marshaling. That means 53 of 54 compiler tests are passing as pure native code - no VM to get in the way and slow things down.Once C marshaling is in place, I'll need to rework the garbage collection implementation a bit, and then I'll have a complete Epoch implementation in JITte...
Recent Entries
-
Full speed ahead!05 May 2013 -
More self-hosting goodness22 April 2013 -
Self-Hosting Progress20 April 2013 -
Epoch Release 14 Shipped18 April 2013 -
Epoch Plans for the Future17 April 2013
Recent Comments
-
Epoch Plans for the FutureApochPiQ - Apr 22 2013 11:58 AM -
Epoch Plans for the FutureBacterius - Apr 22 2013 11:34 AM -
Epoch Plans for the Future3Ddreamer - Apr 21 2013 01:23 PM -
Epoch Plans for the FutureGaiiden - Apr 20 2013 10:02 AM -
Epoch Plans for the Futureachild - Apr 19 2013 08:37 AM
Create a custom theme