Plodding ever onward

Published October 06, 2014
Advertisement
I've begun the mammoth task of refitting the Epoch compiler to believe in namespaces.

Up until now, all names have been global, and all named entities have existed as peers in the global space. (The exception of course being local variables and function parameters/return slots.)

So far, I've moved algebraic sum types and scope metadata to be tracked in a namespace. This doesn't yet entail moving away from global naming, because I need to have all aspects of the compiler "understand" namespacing before I can do that. But it's a major step forward, and I've already caught a couple of rogue compiler bugs and corner cases in the language's implementation.

As rewarding as it is to make progress, there's still a very long ways to go:

  • Type aliases
  • Weak type aliases
  • Structures
  • Function signatures
  • Function tags
  • Functions
  • Overload resolution hints
  • Type matchers
  • Function templates
  • Structure templates
  • Sum type templates
  • Instantiated function templates
  • Instantiated structure templates
  • Instantiated sum type templates
Wheeze.

Some of these are much more pervasive in the code base than others, such as functions and overload resolution hints. Some are already partially ready to go thanks to being implemented later in the compiler's authoring process, and having benefited from me learning how best to use the language along the way.

Once this list is all done, I'll need to go back in another pass and remove the direct usage of the global namespace from all the places where it's currently hardcoded. After that, I'll need to build logic for creating new namespaces and passing them around as appropriate, e.g. for tasks.

Hopefully all this stuff will take long enough that I'll get around to finalizing the actual task syntax before it's time to start implementing tasks in earnest. We shall see.


I haven't totally forgotten about the notion of doing a full language release, either. The plus side of doing a release now is that it would provide a much more realistic representation of the Epoch development experience than, say, Release 14 was. On the down side, it would still mean shipping a lot of subpar code and tools.


Maybe if there's actually some interest in me doing a release, I'll package one up. I'd just hate to go to the trouble of building a package and having a whopping two people download it and never comment on their experiences/opinions. It's been hard enough in the past to get serious traction on releases, so I kind of feel like holding off until I have a really awesome release to show.

Buuuuuuuut I also kind of want people to see all the progress that's been made without having to sync the code repository and go through the muddle of building the thing from sources.



Agh! Indecision.
5 likes 1 comments

Comments

Washu

Maybe if there's actually some interest in me doing a release, I'll package one up. I'd just hate to go to the trouble of building a package and having a whopping two people download it and never comment on their experiences/opinions. It's been hard enough in the past to get serious traction on releases, so I kind of feel like holding off until I have a really awesome release to show.

I for one am interested in a release.

PLEASE!!!! Seriously, I've been working on getting this thing to build, and it is not. I think I need to downgrade my version of LLVM.

Buuuuuuuut I also kind of want people to see all the progress that's been made without having to sync the code repository and go through the muddle of building the thing from sources.

October 06, 2014 07:41 PM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement