Wizzup?
2012-04-29 07:55:10
Hello everyone,
I figured after a few weeks of working on Simba on and off, we've got quite a few great developments to share. Note that most of what I'm going to mention isn't ready to be used/tested yet - (SRL integration in missing for example); but it's on the horizon and will be available in the near future.
Simba 0.99
First of all, Simba 0.99 will be released soon. It contains a lot of bug fixes (more details will be given upon release) and a big amount of (perhaps not too noticeable features). A feature worth noting however is the ability to use Lape and SRL on Simba 0.99; which means we can write scripts in an interpreter other than PascalScript. If all turns out well, we'll (gradually) be moving to Lape all together and abandon PascalScript; but I suspect this won't happen any time soon. (PascalScript will stay in Simba for quite a while).
SMART Changes
BenLand100 has done some wonderful things to SMART. First of all, the SMART you have sitting in your plugin folder supports EIOS; the generic input method that Simba uses. This was a requirement for Lape initially; because Lape could not yet load/call methods from plugins. (Well, it could, but not with our current plugins)
Apart from the EIOS support, he has also been working on moving SMART out of the Simba process. You've read that right, no more JVM in the Simba process that will crash Simba once SMART/Runescape crashes. The CPU usage will also be split; so Runescape CPU usage won't show up Simba CPU usage anymore. We can also finally properly debug Simba as the JVM kept interfering with our debugger.
While the advantages mentioned right now seem marginal; having SMART out of the process also means we can finally start using some of Simba's cooler features: the ability to run several scripts at the same time using one Simba. Of course, you could already do this, but several scripts using the same mouse is hardly useful. Each script can now connect to its own SMART, and you won't need a separate Simba folder for each script.
https://github.com/BenLand100/SMART/tree/master/remote
Simba Multiprocess
This is something Dgby714 and I have been working on. Right now, Simba runs all the scripts in a thread in its own process; but we've been working on moving the scripts out of the Simba process. There are several clear advantages to this:
Don't expect Simba Multiprocess to appear in Simba 0.99 or Simba 1.0 though; it will however most likely come in Simba >1.0; so 1.1.
https://github.com/MerlijnWajer/Simba/branches/multiprocess
Lape, Lape and Lape
Nielsie95 has been doing great work on steadily improving Lape. On of the missing features was to perform calls to native functions (such as plugins) without wrappers (which have to created on compile-time of Simba) and callbacks for native functions (again, without wrappers).
BenLand100, Nielsie95 and I have started work on supporting calling native functions (callbacks will follow later), progress can be seen here:
https://code.google.com/p/la-pe/issues/detail?id=14 and https://github.com/MerlijnWajer/Simba/tree/libffi-lape
Support for using the ordinary plugins is already in place; callbacks and calling native functions from scripts is underway.
Having callbacks (even without callbacks, it is possible) will inevitably eventually result in Forms / import classes appearing in Lape, but I can't comment on when this will happen.
Plugin ABI change
To go forward with this change, we're going to slightly adjust the requirements for plugins. They should use one calling convention only; on 32 bit this will be cdecl and on 64 bit the native calling convention of the operating system. We'll be changing the names of GetFunctionCount etc to make sure no one gets bitten by the calling convention changes.
Simba 1.0
While I haven't talked much about Simba 1.0, it's certainly underway. We've been merging most new features into Simba 0.99; so there isn't a lot to report on for Simba 1.0, but the script manager will definitely be in 1.0. We should start a script manager council soon; a group which verifies and pushes scripts to the script manager. :)
Linux and Mac support
Simba 0.99 contains decent Linux support; so I'm going to consider releasing a ``proper'' Linux version with 0.99, but there are a few bugs I'd like to see fixed first, so I might release a proper Linux version with Simba 0.99.1. If I end up not doing this, you can obviously still get it from the autobuilds.
When Simba will natively support Mac is unknown at this time, but I've created an initial os_mac.pas file to ease porting Simba to the Mac. The only thing required is someone with a Mac, basic knowledge of Simba and the willingness and time to learn.
I figured after a few weeks of working on Simba on and off, we've got quite a few great developments to share. Note that most of what I'm going to mention isn't ready to be used/tested yet - (SRL integration in missing for example); but it's on the horizon and will be available in the near future.
Simba 0.99
First of all, Simba 0.99 will be released soon. It contains a lot of bug fixes (more details will be given upon release) and a big amount of (perhaps not too noticeable features). A feature worth noting however is the ability to use Lape and SRL on Simba 0.99; which means we can write scripts in an interpreter other than PascalScript. If all turns out well, we'll (gradually) be moving to Lape all together and abandon PascalScript; but I suspect this won't happen any time soon. (PascalScript will stay in Simba for quite a while).
SMART Changes
BenLand100 has done some wonderful things to SMART. First of all, the SMART you have sitting in your plugin folder supports EIOS; the generic input method that Simba uses. This was a requirement for Lape initially; because Lape could not yet load/call methods from plugins. (Well, it could, but not with our current plugins)
Apart from the EIOS support, he has also been working on moving SMART out of the Simba process. You've read that right, no more JVM in the Simba process that will crash Simba once SMART/Runescape crashes. The CPU usage will also be split; so Runescape CPU usage won't show up Simba CPU usage anymore. We can also finally properly debug Simba as the JVM kept interfering with our debugger.
While the advantages mentioned right now seem marginal; having SMART out of the process also means we can finally start using some of Simba's cooler features: the ability to run several scripts at the same time using one Simba. Of course, you could already do this, but several scripts using the same mouse is hardly useful. Each script can now connect to its own SMART, and you won't need a separate Simba folder for each script.
https://github.com/BenLand100/SMART/tree/master/remote
Simba Multiprocess
This is something Dgby714 and I have been working on. Right now, Simba runs all the scripts in a thread in its own process; but we've been working on moving the scripts out of the Simba process. There are several clear advantages to this:
- Scripts will run on the main thread of their own process, thus making forms a lot easier.
- We can clearly seperate running scripts from the editor; Simba; which should make remote managers of scripts (start/stop them via your phone) a lot easier. This is probably not going appear very soon though.
Don't expect Simba Multiprocess to appear in Simba 0.99 or Simba 1.0 though; it will however most likely come in Simba >1.0; so 1.1.
https://github.com/MerlijnWajer/Simba/branches/multiprocess
Lape, Lape and Lape
Nielsie95 has been doing great work on steadily improving Lape. On of the missing features was to perform calls to native functions (such as plugins) without wrappers (which have to created on compile-time of Simba) and callbacks for native functions (again, without wrappers).
BenLand100, Nielsie95 and I have started work on supporting calling native functions (callbacks will follow later), progress can be seen here:
https://code.google.com/p/la-pe/issues/detail?id=14 and https://github.com/MerlijnWajer/Simba/tree/libffi-lape
Support for using the ordinary plugins is already in place; callbacks and calling native functions from scripts is underway.
Having callbacks (even without callbacks, it is possible) will inevitably eventually result in Forms / import classes appearing in Lape, but I can't comment on when this will happen.
Plugin ABI change
To go forward with this change, we're going to slightly adjust the requirements for plugins. They should use one calling convention only; on 32 bit this will be cdecl and on 64 bit the native calling convention of the operating system. We'll be changing the names of GetFunctionCount etc to make sure no one gets bitten by the calling convention changes.
Simba 1.0
While I haven't talked much about Simba 1.0, it's certainly underway. We've been merging most new features into Simba 0.99; so there isn't a lot to report on for Simba 1.0, but the script manager will definitely be in 1.0. We should start a script manager council soon; a group which verifies and pushes scripts to the script manager. :)
Linux and Mac support
Simba 0.99 contains decent Linux support; so I'm going to consider releasing a ``proper'' Linux version with 0.99, but there are a few bugs I'd like to see fixed first, so I might release a proper Linux version with Simba 0.99.1. If I end up not doing this, you can obviously still get it from the autobuilds.
When Simba will natively support Mac is unknown at this time, but I've created an initial os_mac.pas file to ease porting Simba to the Mac. The only thing required is someone with a Mac, basic knowledge of Simba and the willingness and time to learn.