🎉 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!
I wrote up some notes on the Epoch R12 compiler here. Figured I'd repost the link since most people probably aren't on the Epoch site pressing F5 all day ;-)
One excellent comment on the previous entry on Epoch's error handling philosophy observed that the design really looks an awful lot like exceptions, and doesn't do much for the orthogonal separation of the four points of error handling I enumerated at the top of that post.
Let's revisit those points…
Let's revisit those points…
As I gear up towards rewriting the Epoch compiler in Epoch, instead of in C++, I've found myself running up against a handful of peripheral issues that affect the ability to write real code in Epoch in the first place.
One of these issues relates to error handling. In my opinion, most languages conf…
One of these issues relates to error handling. In my opinion, most languages conf…
I have to admit that after the whole "let's make the Epoch compiler 1000 times faster" adventure, I kind of burned out on Epoch for a little while, and haven't touched it a lot since. All the fun, exciting, sexy work in optimization was done, and "all" that was left was a giant pile of tedious reim…
One of the more popular topics here on the GDNet forums goes something like this:
"Hi, I just [bought a computer | wrote a simple game | discovered a game engine] and I want to know where to go from here. I'd like to [accomplish some particular goal] eventually. What do I need to learn to get t…
Computing today faces a serious problem.
Hardware has reached a point where the bulk of performance increases are coming not via major innovation in the fundamental design of processing systems, but rather through parallelism. Instead of increasing clock speeds, decreasing die sizes, changing instru…
Hardware has reached a point where the bulk of performance increases are coming not via major innovation in the fundamental design of processing systems, but rather through parallelism. Instead of increasing clock speeds, decreasing die sizes, changing instru…
I learned an interesting lesson last night in over-reliance on optimizing compilers.
Deep in the core of the Epoch grammar is a rule that looks for generalized tokens from the lexer. This rule is designed to match user-defined identifiers like variable and function names - as opposed to reserved ide…
Deep in the core of the Epoch grammar is a rule that looks for generalized tokens from the lexer. This rule is designed to match user-defined identifiers like variable and function names - as opposed to reserved ide…
I finally killed off most of the remaining dynamic memory allocations in my parser. There's still a few lurking in the internals of boost::spirit::lex (it supports "fast" parser backtracking by buffering tokens on the fly) but they're not a huge chunk of the runtime anymore, so I'm not terribly wor…
As part of my ongoing effort to make the Epoch compiler idiotically fast, I've turned my attention to one of the primary killers: dynamic memory allocations.
Part of this is unavoidable, since dynamic memory has to be allocated when constructing the parse tree. But for some reason, I kept seeing rea…
Part of this is unavoidable, since dynamic memory has to be allocated when constructing the parse tree. But for some reason, I kept seeing rea…
As I hinted in a comment on a previous entry, I've finished deploying boost::spirit::lex in the Epoch compiler. My hope was that, by reducing byte-level backtracking, I would realize a substantial speed gain in the parser. It seemed like a logical enough assumption, and so I gave it a shot.
The init…
The init…
When I last left a status update here, I had the new Epoch compiler running on my test case in right around 18.5 milliseconds. For reference, when I started this compiler rewrite, parse times were around 10 seconds. Yes, seconds.
Obviously, a 500-fold speed improvement is nothing to sneeze at, and m…
Obviously, a 500-fold speed improvement is nothing to sneeze at, and m…
Recently, my major undertaking (outside of work of course) has involved rewriting the Epoch compiler. I'm doing this for a few reasons, but the main one is performance; the Release 11 compilation model involves using boost::spirit::classic to parse the input code 3-4 times, progressively elaboratin…
Release 10 of Epoch was a big deal, because it represented a complete overhaul of the language implementation - pretty much everything was redone, from the parser grammars on up to the standard library implementation. It took a long time, dramatically cut back the number of features that still work…
I have eschewed sleep to get some tweaking done on the Era IDE. Specifically, I refined some of the syntax highlighting, and implemented syntax folding in the lexer. This basically lets you collapse sections of code intelligently, based on curly braces. Goes by the name of "code outlining" in Visua…
I've finally closed out the last bugs on the Epoch Release 11 task list, and I'm down to just polishing up the package and getting some last-minute goodies together for the distribution.
One of the highlights is that the Era IDE prototype now supports loading and saving files. Era is written entirel…
One of the highlights is that the Era IDE prototype now supports loading and saving files. Era is written entirel…
Ethanol and nicotine, when combined in sufficient quantities with sleep deprivation, adrenaline, and obsessive work habits, tend to produce interesting results. Here's one from earlier this evening, which I felt compelled to jot down and then figured I'd open up for discussion.
The Nature of Time
Thi…
The Nature of Time
Thi…
Posted up a new Scribbling by Apoch today; this one hails from a long time ago in a journal far, far away... err, actually, from this post.
This Scribbling involves selectively enabling or disabling pieces of C++ code based on whether or not a type conversion is legal. Be warned: here there be templ…
This Scribbling involves selectively enabling or disabling pieces of C++ code based on whether or not a type conversion is legal. Be warned: here there be templ…
I've added a new project to the Scribblings by Apoch page. This time, it's a small utility for monitoring the activity on a Windows file system, or any selected subset thereof. The code is fairly simple and straightforward but makes use of some nasty concepts in Windows, such as overlapped I/O and …
I've whipped up an implementation of the input mapping system described in this article and posted it for free usage and manipulation over at my new Google Code repository. Check it out and abuse it as you like!
[size=2](Note that this post is now also available as an article-proper.)
One of the more common questions asked on the GDNet technical forums relates to handling input in a game engine. Typically, there's a few core issues that pretty much every game faces, and unlike many areas of game implementat…
One of the more common questions asked on the GDNet technical forums relates to handling input in a game engine. Typically, there's a few core issues that pretty much every game faces, and unlike many areas of game implementat…
First of all, I'd like to thank everyone who took the time to slog through that massive journal entry, and especially everyone who offered your feedback in the comments.
I'm going to respond to each comment in turn, and hopefully explain some of my reasoning a bit better and expand on a few points t…
I'm going to respond to each comment in turn, and hopefully explain some of my reasoning a bit better and expand on a few points t…
Get some unsolicited advice from a guy working on a real MMORPG.
It's nothing new, this trend, but it also doesn't seem to be going away as quickly as most fads; perhaps we can accuse World of Warcraft for making this such a huge deal, or maybe it all goes back to Ultima Online and Everquest. We may…
It's nothing new, this trend, but it also doesn't seem to be going away as quickly as most fads; perhaps we can accuse World of Warcraft for making this such a huge deal, or maybe it all goes back to Ultima Online and Everquest. We may…
A couple of people commented about Epoch on my last entry, specifically wondering if my recent move and change of career direction had any negative impact on the life of that project.
You'll be happy to know (I hope) that Epoch is far from dead. There may be a bumpy period of adjustment as I settle …
You'll be happy to know (I hope) that Epoch is far from dead. There may be a bumpy period of adjustment as I settle …
For the past several weeks I've been on something of a hiatus from GDNet. There are several reasons behind my absence, but it is now largely over, and you can expect me to resume haunting these hallowed halls once more. (And there was much rejoicing.)
So what's been going on with me? Why this myster…
So what's been going on with me? Why this myster…
So my friend is an evil wanker and convinced me to join Twitter.
I feel all modern and stuff now.
Go follow ApochPiQ for goodies and such. I will ramble often about nothing in particular, about which you will not care, as seems to be the convention on Twitter. I hope I'm doing it right.
I feel all modern and stuff now.
Go follow ApochPiQ for goodies and such. I will ramble often about nothing in particular, about which you will not care, as seems to be the convention on Twitter. I hope I'm doing it right.
So, snarky post title aside, I have to say that I am really liking the new GDNet.
WYSIWYG post editing? Yez plox.
File attachments? Oh yeah.
Tagging on journal entries? Woohoo!
OK, yeah, there's some speed bumps. I miss the Forum Favorites. I miss the IOTD. The CSS needs a lot of work, and there's a bi…
WYSIWYG post editing? Yez plox.
File attachments? Oh yeah.
Tagging on journal entries? Woohoo!
OK, yeah, there's some speed bumps. I miss the Forum Favorites. I miss the IOTD. The CSS needs a lot of work, and there's a bi…
Epoch Release 11 is on its way soon!
Lots of goodies (most of which I won't bother to list until I do the actual release notes) but it's going to be a good one I think. Overall things are just a lot cleaner under the hood, noticeably faster in the VM, and just plain more fun to write code in.
I hope …
Lots of goodies (most of which I won't bother to list until I do the actual release notes) but it's going to be a good one I think. Overall things are just a lot cleaner under the hood, noticeably faster in the VM, and just plain more fun to write code in.
I hope …
It's been a productive holiday for Epoch!
In addition to adding generalized support for anonymous temporary constructors as well as overloaded constructors, I've added some nice convenience features. Specifically, it is now possible to return anonymous expressions directly from functions, thanks to …
In addition to adding generalized support for anonymous temporary constructors as well as overloaded constructors, I've added some nice convenience features. Specifically, it is now possible to return anonymous expressions directly from functions, thanks to …
Advertisement
Popular Blogs
Advertisement