PureBasic 3.92 review

Download
by rbytes.net on

PureBasic is a new "high level" programming language based on established BASIC rules

License: Shareware
File size: 4168K
Developer: Fantaisie Software
0 stars award from rbytes.net

PureBasic is a new "high level" programming language based on established BASIC rules. PureBasic is similar to any other BASIC compiler you may have used, whether for the Amiga or PC. Learning PureBasic is very easy! PureBasic has been created for the beginner and expert alike. Compilation time is really fast. We have put a lot of effort into its realization to produce a fast, reliable and system friendly language.

The syntax is simple but the possibilities are endless with PureBasic's advanced features, such as pointers, structures, procedures, dynamically linked lists and much more. The experienced coder will have no problem in gaining access to any of the legal OS structures or API objects.

PureBasic is a portable programming language which currently works on AmigaOS (680x0 and PowerPC), Linux, MacOS X (PowerPC) and Windows computer systems. This means that the same code can be compiled natively the three systems and still use the full power of each. There are no bottlenecks like a virtual machine or a code translator; the generated code produces highly optimized executables regardless of the OS on which it is compiled. The external libraries are mainly written in hand optimized assembler, which produces very fast commands, often much faster than the C/C++ equivalent.

Here are some key features of "PureBasic":
Huge set of internal commands (800+) to quickly and easily build any application or game
All BASIC keywords are supported
Very fast compiler which creates highly optimized executables
No external DLLs, runtime interpreter or anything else required when creating executables
Procedure support for structured programming with local and global variables
Access to full OS API for advanced programmers
Easy but very fast 2D game support trough dedicated libraries (DirectX, SDL, ...)
Easy and high quality 3D support based on OGRE
Optimal use of the available hardware by using highly optimized (assembly) commands
Source code is portable between AmigaOS, Windows, MacOS X and Linux, for games and applications
Dedicated editor and development environment
Integrated debugger to easily trace programming bugs.

Technical Features:

486, Pentium (Pro, II, III) support
Built-in arrays, dynamically linked lists, complex structures, pointers and variable definitions
Supported types: Byte (8 bits), Word (16 bits), Long (32 bits), Float (32 bits) and also user defined types (structures)
Built-in string types (characters)
Constants, binary and hexadecimal numbers supported
Expression reducer (grouping constants and explicit numbers together)
Standard arithmetic support in respect of sign priority and parenthesis: +, -, /, *, and, or, lsl, asl, lsr, asr
Very fast compilation (about 300 000 lines/min on a P200)
Procedure support for structured programming with local and global variables
All Standard BASIC keywords: If-Else-EndIf, Repeat-Until, etc.
External library support to manipulate objects like BMP pictures, windows, gadgets, SDL, etc.
External libraries are fully written in hand optimized assembler for maximum speed and compactness
The Linux API functions are fully supported as if they were BASIC keywords
Inline assembler
Precompiled structures with constants files for extra fast compilation
Configurable CLI compiler
System friendly, easy to install and use

Requirements:
Linux with XFree 4.0
NAsm and SDL
GTK+ 1.2
SDL 1.2
PureBasic 'MIDAS Module' library

Installation:

Use 'su -' to have root shell (if not already done)

Copy the 'purebasic/Compilers/pbcompiler' file in /usr/bin/
or any other directory in the PATH:

# cp purebasic/compilers/pbcompiler /usr/bin/

Next, move the whole 'purebasic' directory in /usr/share/

# cp -rf purebasic /usr/share/

NOTE: you can set the $PUREBASIC_HOME environment variable to
your installation path if you don't want to put the purebasic
drawer in /usr/share.

If you don't have 'fasm', copy it in your path (fasm v1.45 at least)

# cp purebasic/compilers/fasm /usr/bin/

To test your install, just type:

# pbcompiler

What's New in This Release:
Added: Full runtime debugger support with a simple console debugger
Added: New library maker with conditional directives
Added: Docmaker for Linux in sdk/
Added: DynamicCPU, SSE, SSE2, 3DNOW, MMX support to compiler
Added: General subsytem support for the compiler
Added: GTK2+ support (optional trough compiler switch: --subsytem gtk2)
Added: Desktop Library
Added: RemoveKeyboardShortcut(), GetGadgetAttribute(), SetGadgetAttribute()
Added: GetGadgetItemAttribute(), SetGadgetItemAttribute()
Added: CalendarGadget(), ExplorerTreeGadget(), ExplorerComboGadget()
Added: MDIGadget(), DateGadget()
Added: WebGadget() (A link from /usr/lib/libgtkmozembed.so need to be done)
Added: UsePalette(), CreatePalette(), SetPaletteColor(), GetPaletteColor()
Added: SwapElements(), IsFile(), DeleteDirectory()
Added: OpenGadgetList(), CountString(), ActivateWindow()
Added: ThreadPriority(), WaitThread()
Added: CountLibraryFunctions(), ExamineLibraryFunctions(), NextLibraryFunction()
Added: LibraryFunctionName(), LibraryFunctionAddress()
Added: Standard icon button for toolbar
Added: Bicubic Interpolation for ResizeImage()

Updated: ExplorerListGadget() now use icons

Optimized: Linked lists, MemoryExtension and Misc (splitted libraries)

Fixed: SetGadgetFont() with #PB_Default wasn't working
Fixed: Font support for OptionGadget(), PanelGadget(), ExplorerListGadget()
Fixed: GTK/GDK and SDL structures in the residents
Fixed: RunProgram() could fail if no parameters were specified
Fixed: BMP decoder for sprites
Fixed: NetworkServerEvent() was blocking in some cases
Fixed: ResizeImage() wasn't working
Fixed: Memory leak in SaveImage()
Fixed: Events with ExplorerListGadget() and ExplorerTreeGadget()
Fixed: SpinGadget() recoded from scratch to be 100% compatible with Windows
Fixed: Sounds commands doesn't crash anymore if no soundcard is present
Fixed: MessageRequester() and InputRequester() could lock X
Fixed: CountGadgetItems() didn't worked for TreeGadget()
Fixed: FormatDate() crashed
Fixed: ReplaceString() which was broken in some case
Fixed: EventWindowID() wasn't working with menu events
Fixed: CatchSprite() 3th parameter wasn't optional
Fixed: OpenFile() failed when the file wasn't existing
Fixed: ExamineDirectory() crashed when a null string variable was used
Fixed: Linker errors with Random(), PeekB()
Fixed: HideGadget() and FreeGadget() on some gadgets
Fixed: WindowX() and WindowY() returned wrong values
Fixed: Open/SaveFileRequester() when entering directly the file in the edit area

PureBasic 3.92 keywords