Monthly Archives: December 2009

Merry Christmas

I want to wish everybody in the PureBasic community a Merry Christmas and a happy New Year! Thank you for taking part in the making of PureBasic by giving feedback and helping find bugs. It was a fun year. Although there was only one major release this year its still quite the accomplishment in my opinion as it is one of the largest updates we did so far.

It has become somewhat of a custom for us to do a release around Christmas or New Year as a present. There won’t be anything like that this year.  The 4.40 isn’t that far behind, but calling it a Christmas-release is kind of wrong because it has been out there (in beta) for quite a while now. Well, i guess you can’t get it right every time. We’ll try to hit the spot again next time 🙂

Our plan is to go for a shorter release cycle with smaller releases in the future to reduce the waiting time for new features and bug fixes and also to keep the whole think more manageable. The next thing in line is a 4.41 bug fix release somewhen in January and then there is the 4.50 coming next. We are working on that already. I want to talk a bit about what i am currently working on so you can see what is ahead:

Data Breakpoints

Data breakpoints are like normal breakpoints, only they are not defined by a line number but by a condition. As soon as this condition becomes true the program will halt. This is a great feature for debugging a problem like a variable having an unexpected value but you have no idea where the change is made. So in this case you would just define ChristmasText$ <> “Merry Christmas” as the condition and the program will halt as soon as the value changes.

The conditions are evaluated by the debuggers expression parser which provides access to variables, arrays, lists etc but also some functions from the Memory library so you can even check for things inside memory buffers. Everything you can put behind an “If” should be possible as a data breakpoint.

Of course this feature comes at a price and that is speed. The conditions have to be re-evaluated for every executed line to notice all changes correctly. This is quite the slowdown. However, if you develop on a fairly recent machine it should not be a big deal at all. Also keep in mind that you won’t run your programs with data breakpoints all the time. They are only for tracking down specific problems and there speed is not really critical.

Multiple compiler support

Ever since we introduced the 64bit version in 4.30 people have requested that we merge the 32bit and 64bit version somehow so they can easily compile projects for both platforms. While a merge of the versions won’t happen any time soon (the versions are just very different internally and it would be a bit of a mess), there will now be a feature to provide a similar functionality. Basically there will be a list of “additional compilers” in the preferences where you can add the paths to other compilers installed on your system. These compilers are then available for selection in the compiler options. This will work with compilers all the way back to version 4.10.

So by adding the 64bit compiler to this list, you can easily build both 32bit and 64bit targets from the same IDE and from a single project. Even better, the debuggers of the x86 and x64 versions are compatible so as long as the compiler’s version number matches you can even debug poth from within the same IDE (if the version does not match, all debugging will be in the standalone debugger). The same is true now for the PowerPC and x86 versions on OSX. You can load the PowerPC compiler into the x86 IDE and compile/debug from there. This way you won’t have to run the entire IDE in Rosetta which is quite the slowdown.

Well, this is it for this little peak at the current development. Have a Merry Christmas every one!