What’s New in Jax – v0.0.0.9

We’re coming down the stretch in preparation for Jax v1.0! I’ve had to draw a line in the sand and decided not to implement any new features following Picking (which was added in Jax v0.0.0.7). I can hardly wait to ship v1.0 so I can start adding in all the new features I’ve thought about since making that decision! But, patience is a virtue, as they say. I’ve decided to release v0.0.0.9 tonight instead of v1.0, and let it ride with the latest batch of changes for a day or two before making the leap to a major version number.

(Update: it’s now 0.0.0.10; I excluded some worthless files from the build, and the gem size dropped from almost 10MB to 100KB! Thought that was worth another release!)

So, what kinds of changes are we looking at here? Nothing too drastic, I assure you; but there are some things that might cause a headache or two if you go upgrading blindly.

As usual, here’s the changelog linkage!

First and foremost, the Custom Shaders Guide is up! Like the Getting Started Guide, it’s pretty comprehensive; that makes it big, but hopefully not too big. It answers every question I could think anyone might ask about Jax shaders. The guide is still in draft form and I’ll continue to polish it up over the next few days, but I wanted to get it out there as soon as possible since there’s been quite some interest about how to go about writing your own shaders lately.

Now I’ll talk about changes in the actual code base: I’ve altered how Jax specs are run, with particular emphasis on shader specs. Generating a new Jax application will now generate an additional helper file at spec/javascripts/support/helpers/jax_spec_environment_helper.js. I’ve moved all of the Jasmine set-up code into this file, and altered the generated spec/javascripts/support/spec_layout.html.erb file to call the helper.

In addition to cleaning up the layout file, this helper actually serves a useful purpose. It defines a global SPEC_CONTEXT which is now automatically managed by the test suite. No longer do you have to manage your own contexts from one spec to the next! It’s now completely transparent and totally automated — and not to mention safer. Since it runs on a completely different <canvas> element than the visual tests, you don’t have to worry about it causing problems. And since it’s automatically disposed and then reinitialized between tests, you don’t have to worry about individual specs tainting the context!

There’s a downside to this change, though. If you’re working on an existing Jax project, you’ll need to generate a new project and copy these files into your existing project; also, if you have custom shaders, you’ll want to remove the context initialization and disposal from the shader tests. (Other tests aren’t affected.) Sorry for that — though you were warned about it being pre-release software!

The rest of the changes were pretty minor, and only worthy of a footnote. Bugfixes here and there, and the error messages when a glDrawStuff function fails now include the exact enum name, so you don’t have to look it up the hard way. Stuff like that.

I’ve also got 2 more live demos on the way! I’m hoping to release them over the next day or so. Hold tight!

Comments are closed.