- True global variables. (declared using the new global keyword)
- Passing arguments to a sub or function by reference. (I complained about the lack of this feature in LB3 about 4 posts ago.)
- Handle variables and the new maphandle command. (liberation from static handles to windows, controls and files)
- Dynamic evaluation of Liberty Basic code inside of a running program. (eval returns a numeric value and eval$ returns a string value)
- Subroutines can now be used for event handlers. (a better choice over branch labels for large programs)
There are many other enhancements, but these are the big ones. The IDE also has a new feature that lets you create tutorials or lessons using a three-pane window. On the left pane is the outline of the lesson. On the upper right pane is the lesson text. On the lower right pane is LB code that can be run by the user. The lessons can be created in the IDE and stored as lesson files with an lsn extension (i.e. tutorial1.lsn).
Some people have called Liberty Basic the language for the masses. Carl strives to keep the language easy to learn and fun to use. He markets to beginning programmers and hobbyists, but as the years roll by LB is moving slowly into the realm of the professional. I welcome this direction, but I hope that the personality of the product is not lost in new complexity. A lesson from current events is Microsoft's VB.NET. The Visual Basic I know and love is nowhere to be found in this new product. VB.NET is just C# with VB-like syntax.