Official Website
BAXIC
Download BAXIC
  
BAXIC Version History

Alpha 0.21

[NEW] Added the following methods to a LIST:
list.empty() Remove all elements of the list.
list.contains(key as string) as boolean Returns true if an element with name given by key exists.
list.remove(key as string) Removes the element with name given in key.
list.removeLast() Removes the last element.
list.removeFirst() Removes the first element.
list.count() as integer Returns the number of elements.
list.lastIndex() as integer Returns the index of the last element.
list.asString([delimiter as string]) as string Return all elements concatenated using delimiter or a space if delimiter is not provided.

[NEW] New functionality to extend the language from within an RB application without modifying the actual engine. See the module LanguageExternalsSupport.

[CHANGE] If you wish to treat Methods as intrinsic objects you must explicitly declare optional parameters using the new keyword "optional". For example:

function doThis(optional name as string, optional value as string)

In the above example if we treat "doThis" as an object we can called it using the following syntax:
doThis()

[CHANGE] All instances of objects now inherit from the common class "object". Object defines a few handy methods:
object._name() as string Returns the name of the object.
object._datatype() as string Returns the data type of the object.
object._classname() as string Returns the class name of the object.
object._hasMember(name as string) as boolean Returns true if name is a member of the object.

[NEW] You do not have to declare (prototype) global methods at the start of the script. Methods are created when their code is first found. You must include the "function fcName() as datatype"
syntax to set the return type of functions.

[NEW] Rewrote most of the OOP internals. This change is transparent for users. Old GUI engine is broken and it will stay broken. The new OOP engine allows to easily develop "glue" objects for REALBasic objects and OS objects and as so we have a new GUI engine using this functionality. Visual Basic style of form definitions are not supported. UI must be built at runtime which actually makes it more flexible. I'm cooking a new function to load Visual Basic form definitions at runtime. Similar to Apples Nibs. The file would be a text file with the actual definition of the form, no code, just form definition. This new function will create a new window subclass from the form definition.

[FIX] Lots of code cleaning and re-factoring. Re-organized project structure now is easier to navigate. We now have standardized folder structures and file names. Methods are much better organized by files and use standard name conventions across the project. Lots of the old code is gone.

Alpha 0.20

After toying with the idea of what would be the best way to use method in a more static fashion instead of as volatile entities I decided that it could be very handy if I could treat a method as an static object. So 020a is mainly that the capability of accessing parameters and other variables inside a method as you would with object members. This means that variables including parameters are all static in nature. See the example functions06.bs in the samples folder to get a better idea of how it works.

[NEW] List now may contain objects, methods or anything that has a symbol.
[NEW] You can treat string literals as string objects just like you would with a string variable.
[FIX] In an expression or statement a LIST value will be evaluated before the rest of the expression. This allows to manipulate the item inside a LIST directly without having to assign it to a variable. Things we can do now are for example: MyList['aMethod'](aParam1, aParam2) in this example we have a method named "aMethod" that was assigned to an element of the list then we are executing the method from the List.
[NEW] Methods are now intrinsic objects. You can use the dot notation to access variables defined inside the method, this includes method parameters. With this feature variables defined in a Method are now static in nature. All values must be initialized as needed.
[NEW] Objects instances have two methods getDataType() as string and hasMember(memberName as string) as boolean.
[NEW] New data type "SYMBOL" a symbol is generic data type. You can assign anything to a symbol even a method using the function "getPointer()". The trick with the symbol is that it takes the form of the variable assigned. Therefore once you assign a variable to a symbol it will NO longer be considered a symbol. The symbol are perfect to clone variables. Symbols do not make much sense with primitive data types but they come very handy to clone objects and methods.
[FIX] Fixed a bug that caused an assignment error when assigning an object to another and it requires casting down the inheritance chain.
[NEW] Database support. Added the classes MySQLDatabase and recordset. Initial support is only for MySQL, hopefully I'll get more time to add other databases. See the script include in the samples folder.
[NEW] A URL Class.
[CHG] Internal symbol tables where changed to use hash tables. This should speed up lookup of symbols.
[MISC] Project was cleaned a bit. Also the whole project files are a bit more organized.

Alpha 0.18

First of all we were unable to release 0.15 to 0.17 due to time limitations. In this release the symbol table was updated to use a hash. This should speed up the fetching of symbols. The code was updated to work with the new symbol table. I started to identify old code that needs to be removed. I already cleaned some of the code on the system table and other places. The handling of expression changed a bit to allow for a syntax more like Objective C. Now when a method is executed the object is returned. This allows to assign an object or pass an object as an argument after calling a method of the object.

In 018 you can pack bOSL scripts in a self contained bundle. Bundles are only supported in MacOS. Also you can set a window's transparency and mask the shape of a window. Both of this last features are also Mac only features.

For-In was changed to ForEach. This allows to optimize the code of regular FORs and the FOREACH. Supporting both with the "FOR" keyword meant more overhead at runtime.

Alpha 0.14

A screen class was added to the system object to allow access to information about users displays. A new Timer class was also added.

Expressions now evaluate boolean conditions. Logical operators have the same precedence as sums and subtractions. All logical operators have the same priority therefore you have to use parentesis to establish evaluation order for logical operators, and the plus and minus operator. In a future version logical operators may be changed to have a lower priority than the plus and minus. IF, DO, WHILE are no longer limited to the syntax "<expression> <logical operator> <expression>", IF, DO, WHILE can now use any expression that evaluates to a boolean value. Caution the runtime doesn't perform short circuit when evaluating logical expressions. This feature will be added once the expression parser is updated.

Samples and added new ones to reflect and demonstrate changes in the language.

Alpha 0.13

The project was divided into a command line version and a GUI version.
The command line version has built-in CGI functionality. A new object CGI was added to access POST and GET parameter, headers, and read and create cookies. A new Session object allows to manage persistant data when programming web applications.

Also HTTP, MIME and Security objects were added. The Date object now has a FormatDate and CookieDate function. The System object allows you to read and set environment variables. The Math object has a new random function with parameters to limit the range of the random number generated.

This version also sports a new Socket class, Keyboard class, MemoryBlock class.

You can create menus for GUI scripts. There're still some issues where the menu is not disposed when the script ends. if a second script is run under bOSL the menus created by the previous script will appear. This will be fixed soon.

You can create a picture object using a PixMap string with the new method "NewPictureFromPixelMap()". You can now embed an image inside your script.

Alpha 0.9

The GUI engine is back after it was updated to use the new OOP engine.

Added new gui sample projects.

Alpha 0.8

New LIST data type.

Implemented Lists. Assigments allows to Assign a list to another. Functions can return a list.
Internal change to Expression evaluation, now it always returns a symbol instead of a variant.

Implemented the functions LIST and RANGE to create lists.

Implemented FOR-IN statement to iterate with lists.

Most built-in objects were updated to use the new OOP engine.

Alpha 0.7

New OOP engine implemented. Changes to the runtime were made to support the new engine.