More threads. More responsive.
The IBFListener calls don't wait for the WinForms updates to finish
now. They put changes onto a few variables using a lock and then
activate a dormant thread to actually run those on the worker thread.
Once it's done, that dormant thread goes back to waiting for an
AutoResetEvent to fire that tells it when there's actually work to
do. So it shouldn't chew up any CPU. I found out about this object
working on this project and now I want to find everywhere in the game
that uses a while loop to wait for stuff, and replace it with this.
* MindBlow now lets you reset memory before you start a new
program, and kill one that is still executing
* The MindBlow site now uses the correct button theme
For 50,000 Codepoints you can write and run Brainfuck programs in
a dedicated IDE. Check out the site on "shiftnet/mindblow".
The IDE seems to be working perfectly. The site has some theming
issues.
Previously, only one assembly could be compiled per startup. You
could compile all of your mods by restarting the game over and
over, loading the previously compiled mods from the cache.
Now, that's not necessary.
Oh yeah, also, more bugs in the Linux "port". Yippee. Whoops.
My first attempt at an assembly cache was a dictionary from a
Python filename to its associated assembly... except each templated
class in the file gets its own assembly.
This new format (which has different magic numbers) provides a
dictionary from a Python filename to a *list* of its associated
assemblies. This also means that the cache can remember Python
files with no associated assemblies so that they don't get scanned
again.
It uses a meta-language and a CSharpCodeProvider on startup. I will
release a tutorial on the forums soon showing how to use it.
This commit also adds an extremely basic loading screen which shows
while Desktop is getting everything ready. Which can take a while
if you have any Python mods. Thanks, IronPython.