History

 On this site you can read the changes and extensions of the

 individual PureBasic versions in the recent past.

 

Contents of the individual PureBasic updates or new versions:

05/23/2008 : PureBasic V4.20 (all OS)
- Added: Mail library
- Added: Ftp library
- Added: RegularExpression library
- Added: Http library
- Added: SerialPort library
- Added: FLAC library
- Added: SQLite library
- Added: DirectX 9 subsystem
- Added: Sound Streaming for OGG and FLAC
- Added: #PB_Sound_MultiChannel support for the sound library
- Added: CreateImageMenu(), CreatePopupImageMenu(), SHA1FingerPrint(), SHA1FileFingerPrint()
- Added: CRC32FileFingerprint(), ExamineMD5FingerPrint(), ExamineSHA1FingerPrint(),
- Added: NextFingerPrint(), FinishFingerPrint(), IsFingerPrint()
- Added: Hexadecimal and binary support for Val() and ValQ()
- Added: #PB_Compiler_Procedure compiler constant
- Added: #PB_Round_Nearest support for Round()
- Added: 'XOr' drawing support for Linux/SDL and MacOS X
- Added: New "Profiler" tool for the Debugger menu to monitor how often lines are called in the code
- Added: Debugger can now evaluate expressions (see Debug output)
- Added: The Memory Viewer can accept any expression as the start/end address
- Added: Adding a "+" at the "end address" field of the Memory viewer makes the end address relative
- Added: Placing the mouse over a Variable will display its value while the program runs.
- Added: Selecting a more complex expression and placing the mouse over it will evaluate the expression in the running program (if possible)

- Changed: Mid() has now the Len() parameter optional

- Optimized: Compiler source processing speed (up to 8x faster)
- Optimized: The whole commandset by using a better C compiler (Windows only)

- Fixed: Quite some bugs related to the commands and compiler

11/09/2007 : PureBasic V4.10 (all OS)
- Added: XML library
- Added: Drag & Drop library
- Added: Vista compatibility (fully comptiable with UAC), except for Sprite library (planned for 4.20)
- Added: ModPlug support for module replaying (removed MIDAS)
- Added: ScintillaGadget(), TruncateFile()
- Added: EnableASM and DisableASM compiler directives
- Added: #PB_OS_Windows_Vista and #PB_OS_Windows_Server_2008 for OSVersion()
- Added: Lots of new fetaures for the WebGadget()
- Added: many new small improvement to the IDE (New compiler communication protocol, Vista compliance, brace markers, faster coloring etc.)
- Added: synchronized release between Windows, Linux and MacOS X !

- Changed: InitDatabase() to UseODBCDatabase()
- Changed: On Windows the IDE and PB tools preferences are now stored in the user applicationdata folder

- Removed: The SmartUpdate tool is no longer supported

- Fixed: lots of bugs related to the commands and compiler

04/28/2007 : PureBasic V4.01 (Linux)
- Fixed: All endian related issues
- Fixed: GetGadgetItemText() for TreeGadget()
- Fixed: IDE crash when using the "Run" command

04/15/2007 : PureBasic V4.00 (Linux)
As PureBasic 4 is a quite big release in both terms of changes and enhancements, a document which sum up all the modifications about the libraries commands since the last stable release is available: click
here.

- Added: Native unicode support
- Added: Subsystems support
- Added: Unlimited length strings in both ascii and unicode mode
- Added: Thread safe commandset and strings
- Added: Character type (.c)
- Added: Double type (.d)
- Added: Quad type (.q)
- Added: 'XOr' and 'Not' logicals operators
- Added: Fixed string type (String${#Number})
- Added: Macro/EndMacro - single and complex mode
- Added: With/EndWith for cleaner code
- Added: Assign possibility to Static (quite important), Protected and Global: "Global a = 5"
- Added: It's now possible to create a linkedlist of pointer
- Added: Support for Global, Protected, Static and Shared arrays and linkedlist: "Global NewList MyList.l()". NewList alone does not make the list global anymore
- Added: #PB_Compiler_File, #PB_Compiler_Line, #PB_Compiler_Version, #PB_Compiler_Home, #PB_Compiler_Debugger, #PB_Compiler_ThreadSafe, #PB_Compiler_Unicode
- Added: CompilerError "Message" directive
- Added: @Procedure() and ?Label support in Data.l directive
- Added: optional parameters for procedures, interfaces methods, and prototypes
- Added: /CONSTANT Test=Value switch to declare constants on the compiler line
- Added: Swap keyword to quickly swap 2 variables or elements (Swap a,b).
- Added: multiple 'Case' for Select/EndSelect: Case 1, 2, 6 To 20
- Added: 'Prototype' keyword to declare functions pointers easily
- Added: 'ProcedureC' keyword to declare cdecl procedure easily
- Added: Procedure parameters can now have the same name than a global variable (automatically protected)
- Added: EnableExplicit/DisableExplicit: variables must be declared with Define, Global, Protected, Shared or Static.
- Added: Defined(Name, Type) compiler function. Type can be #PB_Constant, #PB_Variable, #PB_Array, #PB_LinkedList, #PB_Structure, #PB_Interface
- Added: ReDim for single and multi-dimensionned arrays
- Added: Import/ImportC/EndImport to import functions and variables from external .lib
- Added: LinkedList and Arrays can now be passed as procedure parameters
- Added: PseudoTypes: p-ascii, p-unicode, and p-utf8
- Added: Assembler and Linker errors for CLI compiler are now directly displayed
- Added: OpenGL subsystem for multimedia applications
- Added: full alphachannel support for Sprite3D library (trough PNG and TIFF)
- Added: Subsystem() compiler directive to check if a subsystem is in use
- Added: exponent form for constant float: 123.5e-20
- Added: local variables aliases are generated when using '!' raw assembly to ease their referencing (in form p.v_variable)
- Added: 'Step over' and 'Step out' features to the debugger
- Added: Process library
- Added: Shared objects (.so) creation

- Updated: Resident files now supports quad, double, macros and prototypes
- Updated: Many library commands
- Updated: OGRE engine to 1.0.7 version
- Updated: The french documentation has been greatly enhanced

- Optimized: Faster float and litteral numeric mixing
- Optimized: File library completely rewritten and now handle a read/write cache for very fast performances
- Optimized: Procedures are now as small as possible, which should give some speed increase

- Changed: When a numeric parameter is expected, it's not possible to pass a string anymore
- Changed: 'DefType' renamed to 'Define'

- Fixed: Internal system functions no more trash reserved registers
- Fixed: A lot of small/medium issues which have arosen since the last version

12/18/2006 : PureBasic V4.02 (Windows)
- Fixed: Macros issues
- Fixed: LoadImage() with plugins in unicode mode
- Fixed: ExplorerListGadget() with over 4GB file
- Fixed: ExaminePreferenceKeys() didn't list the first key
- Fixed: ExamineDirectory() didn't handle patterns properly
- Fixed: Several IDE problems
- Fixed: Some IDE and Debugger problems
- Fixed: Several compiler bugs

11/01/2006 : PureBasic V4.01 (Windows)
- Changed: CreateThread() doesn't returns an OS thread handle anymore (use ThreadID() instead)

- Fixed: Several important quad and unicode issues
- Fixed: Threadsafe mode wasn't properly working in some cases
- Fixed: Nested compiler directives in macros
- Fixed: GetFileDate() and DirectoryEntryDate() now uses local time
- Fixed: OpenFileRequester() could fail with a lot of selected files
- Fixed: Many minors bugs

05/08/2006 : PureBasic V4.00 (Windows)
The now famous, hyped version 4.00 of PureBasic is here. Just judge by yourself, there is quite a lot of new and sexy looking features. And there is quite a lot of changes as well, as we took the opportunity to fix long time standing issues by reworking a bit the commandset, all for the best. Don't be affraid, it can look a bit massive, but you will still feel at home as absolutely nothing changed about the programming logic. To consult the changes done to the libraries, click
here. Enjoy !

- Added: Native unicode support
- Added: Subsystems support
- Added: Unlimited length strings in both ascii and unicode mode
- Added: Thread safe commandset and strings
- Added: Character type (.c)
- Added: Double type (.d)
- Added: Quad type (.q)
- Added: 'XOr' and 'Not' logicals operators
- Added: Fixed string type (String${#Number})
- Added: Macro/EndMacro - single and complex mode
- Added: With/EndWith for cleaner code
- Added: Assign possibility to Static (quite important), Protected and Global: "Global a = 5"
- Added: It's now possible to create a linkedlist of pointer
- Added: Support for Global, Protected, Static and Shared arrays and linkedlist: "Global NewList MyList.l()". NewList alone does not make the list global anymore
- Added: #PB_Compiler_File, #PB_Compiler_Line, #PB_Compiler_Version, #PB_Compiler_Home, #PB_Compiler_Debugger, #PB_Compiler_ThreadSafe, #PB_Compiler_Unicode
- Added: CompilerError "Message" directive
- Added: @procedure()and ?Label support in Data.l directive
- Added: optional parameters for procedures, interfaces methods, and prototypes
- Added: /CONSTANT Test=Value switch to declare constants on the compiler line
- Added: Swap keyword to quickly swap 2 variables or elements (Swap a,b).
- Added: multiple 'Case' for Select/EndSelect: Case 1, 2, 6 To 20
- Added: 'Prototype' keyword to declare functions pointers easily
- Added: 'ProcedureC' keyword to declare cdecl procedure easily
- Added: Procedure parameters can now have the same name than a global variable (automatically protected)
- Added: EnableExplicit/DisableExplicit: variables must be declared with Define, Global, Protected, Shared or Static.
- Added: Defined(Name, Type) compiler function. Type can be #PB_Constant, #PB_Variable, #PB_Array, #PB_LinkedList, #PB_Structure, #PB_Interface
- Added: ReDim for single and multi-dimensionned arrays
- Added: Import/ImportC/EndImport to import functions and variables from external .lib
- Added: LinkedList and Arrays can now be passed as procedure parameters
- Added: /LINKER flags to provide a command file directly to the linker
- Added: PseudoTypes: p-ascii, p-unicode and p-bstr to use with 'Prototype' and 'Interface'
- Added: Assembler and Linker errors for CLI compiler are now directly displayed
- Added: OpenGL subsystem for multimedia applications (can be combined with NT4 one)
- Added: full alphachannel support for Sprite3D library (trough PNG and TIFF)
- Added: Subsystem() compiler directive to check if a subsystem is in use
- Added: exponent form for constant float: 123.5e-20
- Added: local variables aliases are generated when using '!' raw assembly to ease their referencing (in the form p.v_variable)
- Added: 'Step over' and 'Step out' features to the debugger
- Added: Process library

- Updated: NT4 support is now done trough a subsystem (DirectX 3)
- Updated: Resident files now supports quad, double, macros and prototypes
- Updated: Many library commands
- Updated: OGRE engine to 1.0.7 version
- Updated: The french documentation has been greatly enhanced
- Updated: File library supports 64 bits files

- Optimized: Smaller executable footprint: 1,5 kb instead of 2,5 kb for the smallest one
- Optimized: Faster float and litteral numeric mixing
- Optimized: File library completely rewritten and now handle a read/write cache for very fast performances.
- Optimized: Procedures are now as small as possible, which should give some speed increase

- Changed: Console library commands can now fully redirected (ie: to write CGI for example)
- Changed: When a numeric parameter is expected, it's not possible to pass a string anymore
- Changed: Temporary purebasic.exe name aren't random anymore, to comply with some firewalls
- Changed: 'DefType' renamed to 'Define'

- Fixed: Internal system functions no more trash reserved registers
- Fixed: Mouse is automatically released in windowed mode when the window loose focus
- Fixed: KeyboardInkey() now handle shift/alt modifiers correctly
- Fixed: IsScreenActive() works correctly for windowed mode as well
- Fixed: A lot of small/medium issues which have arosen since the last version

10/05/2005 : PureBasic V3.94 (MacOS X - first version)
It's finally here ! It's the result of many months of hard work and we are very happy to present the OS X version of PureBasic. It is very complete, proposes native support of all PureBasic libraries and can be used either on the command line (for command line freaks) or via the provided IDE. There is even an optional support for GTK 1 and 2 to test the application look and feel with this API (when porting from OS X to Linux for example). Don't hesitate to play with it and reports any problems to
http://forums.purebasic.com. Have fun!
- Build in native IDE and debuggers (standalone or console)
- Native OS X support for GUI (Carbon), sprites (OpenGL), sounds and movies (QuickTime).
- Very fast PowerPC assembler code generation, which allows excellent performances and reduced executable size
- Build in OS X API support (only for a few functions for now)
- The IDE and debuggers are fully written in PureBasic, which prove the portability concept between OS X, Windows and Linux
- Most of the PureBasic commandset is supported
- Much, much more !

09/21/2005 : PureBasic V3.94 (Linux)
- Added: Brand new IDE for GTK1.2 and GTK2 !
- Added: Powerful integrated, standalone and console debuggers !
- Added: SoundPlugin and SoudPluginOGG libraries
- Added: FillArea() support for both SDL and GTK
- Added: DrawingMode() support for SDL (except XOR)
- Added: #PB_ToolBar_Toggle, Get/SetToolBarButtonState()
- Added: Same font than Windows for SDL drawing commands
- Added: DrawingImage() and Point() support for GTK
- Added: DrawingImage() for SDL, including with zoom support
- Added: CallCFunction() and CallCFunctionFast()
- Added: Get/SetGadgetAttribute() support for ScrollAreaGadget()
- Added: ContainerGadget() border flags support
- Added: #PB_Event_ActivateWindow
- Added: #PB_Splitter_First/SecondMinimumSize support
- Added: #PB_Splitter_First/SecondFixed support
- Added: CountTreeGadgetNodeItems() support
- Added: Optional 'Position' parameter for OpenTreeGadgetNode()
- Added: Optional 'Color' parameter for ColorRequester()
- Added: PNG transparency support for images (for Toolbar, and Gadgets)
- Added: ParentID support for OpenWindow()

- Changed: *Warning* CallFunction/Fast() isn't CDecl anymore (CallCFunction is)

- Optimized: SDL and GTK shared libraries are now linked only if used
- Optimized: 2DDrawing is smaller and faster
- Optimized: Recoded completely the ListViewGadget() to be more scalable

- Fixed: Font management for GTK2 has been reworked
- Fixed: CallFunction() and CallFunctionFast took only 11 arguments
- Fixed: Circle() and Ellipse() wasn't properly centered
- Fixed: GrabImage() and CopyImage() could fail with ID > 9
- Fixed: RunProgram() exited the program if the file wasn't found
- Fixed: PopupMenu() didn't return WindowEventID() correctly
- Fixed: SetGadgetState() with ListViewGadget() didn't scroll
- Fixed: Multiple call to CreateToolBar() could lead to a crash
- Fixed: TrackBarGadget() bug with GTK2
- Fixed: Image problems on 16 bits desktops
- Fixed: Refresh problem with SetGadgetState() and ButtonImageGadget()
- Fixed: RemoveGadgetItem() didn't work with ListIconGadget()
- Fixed: DesktopDepth() wasn't working
- Fixed: EditorGadget() didn't supported Get/SetGadgetItemText(), CountGadgetItems(), ClearGadgetItemList()
- Fixed: Menu shortcuts didn't fired any events
- Fixed: MenuItem() issued a gtk warning when using a wrong accelerator
- Fixed: EventType() for ListViewGadget() wasn't working
- Fixed: Input() returned only one character
- Fixed: ClipSprite() wasn't working properly
- Fixed: CatchSound() didn't have the optional parameter
- Fixed: ReceiveNetworkFile() wasn't working
- Fixed: NetworkServerEvent() didn't send deconnect event
- Fixed: userlibraries\ directory wasn't working
- Fixed: Arrows are now displayed when there is too much Panels items
- Fixed: Images were disappearing in the TreeGadget()
- Fixed: #PB_Event_SizeWindow event was lost sometimes

08/16/2005 : PureBasic V3.94 (Windows)
- Added: Brand a new IDE and 3 Debuggers (!)
- Added: Resource file support to the compiler and IDE (/RESOURCE compiler switch)
- Added: Version support for executables and DLL (trough resource)
- Added: #PB_Event_ActivateWindow event support
- Added: #PB_Web_Mozilla flag to use the Mozilla ActiveX for the WebGadget()
- Added: GetToolBarButtonState() and SetToolBarButtonState()
- Added: Full documentation for the IDE and Debuggers

- Fixed: 32x32 bitmaps in ListIconGadget() with big icon display mode
- Fixed: OpenScreen()/CloseScreen() could fail when using sprite3D
- Fixed: MovieLength() and MovieInfo() were incorrect with WMV format (thanks to Traumatic ;-)
- Fixed: ToolBar disable bug when mixing image and icon with XP skins
- Fixed: Possible crash when closing a window with a free'ed statusbar or toolbar
- Fixed: ImageGadget() and ButtonImageGadget() couldn't be used with AnimateWindow_()
- Fixed: ImageGadget() bug when using DisableGadget()
- Fixed: LineXY() didn't release memory correctly
- Fixed: Line() and LineXY() affected the DrawText() position
- Fixed: SortList() could crash with big already sorted lists
- Fixed: SetMenuItemState() did change the disable state
- Fixed: Editable combobox created with #PB_Any didn't handle TAB correctly
- Fixed: OpenFileRequester() fails if the default filename wasn't correct
- Fixed: Compiler bug with string concatenation and procedures
- Fixed: Alignment problem in procedure which could makes API call fails in some case

02/28/2005 : PureBasic V3.93 (Windows)
- Added: SortStructuredArray(), SortList(), SortStructuredList()
- Added: Conditional directives to LibraryMaker
- Added: KeyboardMode() (wasn't in the doc)
- Added: Optional 'Color' parameter for ColorRequester() and FontRequester()
- Added: SetGadgetText() can now be used on an editable ComboBoxGadget()
- Added: #PB_Default support to ClipSprite() to remove the clipping
- Added: #PB_FileSystem_Force to CopyDirectory()
- Added: #PB_OS_Windows_Server_2003 support to OSVersion()
- Added: Base64Decoder(), GetGadgetFont()
- Added: ResizeImage() now support a 'Mode' parameter to choose the resize algorythm
- Added: Event when a splitter is moved or resized so the children can be agenced
- Added: Realtime debugger check for Plot(x,y,Color) with ScreenOutput() and SpriteOutput()
- Added: Debugger check to DirectoryEntrySize/Name/Attributes()
- Added: IDE enhancements by Tinman

- Updated: Interface Importer and DirectX9 interfaces in residents (thanks to Traumatic !)
- Updated: Uses of Kale's icons for the IDE
- Updated: French documentation spellchecked and reworked by trasfract

- Optimized: Debugger mode is smaller and allow big structured variables
- Optimized: Splitted Misc library
- Optimized: Faster Base64Encoder() function
- Optimized: Better code generation for string assignement and concatenation

- Changed: OffsetOf() syntax, to fit with the SizeOf() one (more consistent)

- Fixed: A bug in ImageGadget() with XP skin activated and 32 bits bitmaps
- Fixed: ExplorerListGadget() didn't displayed .ico and .lnk files correctly
- Fixed: ButtonImageGadget() was loosing its picture in rare case with XP skins
- Fixed: No more 'ding' (windows sound) on click in fullscreen when ExamineMouse() wasn't used
- Fixed: When using ALT+TAB with a fullscreen application, the icon is correctly displayed
- Fixed: Sprites are now correctly restored when switching back from multitask
- Fixed: CopyDirectory() modified the input string in some case
- Fixed: ListIndex() was broken in some rare cases
- Fixed: RemoveString() and CRC32FingerPrint() couldn't be used in expressions
- Fixed: SetGadgetItemText() was broken for ListView() gadget
- Fixed: ExamineDirectory() with an uninitialized string variable
- Fixed: CalendarGadget() bug when multiple calendars were initialized on the same window
- Fixed: RSet() returned wrong result in some rare cases
- Fixed: CreateFile() failed on hidden files
- Fixed: ZeroMemory_(), FillMemory_(), MoveMemory_() and CopyMemory_() wasn't recognized
- Fixed: #PB_Event_MoveWindow is now correctly recognized
- Fixed: #PB_EventType_LostFocus wasn't sent if 2 stringgadgets were side by side.
- Fixed: Gadget's tooltips wasn't correctly displayed on NT4 when the window was always on top
- Fixed: OGG Plugin wasn't working anymore and sometimes songs were cut. It's also faster to decode.
- Fixed: ResizeImage() doesn't change the image anymore if the same dimensions are used.
- Fixed: TAB in an EditorGadget() doesn't give the focus to others gadgets anymore but insert a Tab
- Fixed: LCase() didn't handled the 'ß' german character correctly
- Fixed: SetGadgetState() wasn't working correctly for OptionGadget()
- Fixed: Debugger's code listing window dimensions are now saved like other windows
- Fixed: EditorGadget() while using AddGadgetItem() with blank strings and -1 position
- Fixed: SortArray() could crash on big already sorted arrays and is now thread safe
- Fixed: ReceiveNetworkFile() didn't handle long filename correctly
- Fixed: Display issues with ButtonImageGadget() and toogle mode (with API)
- Fixed: SpriteWidth() and SpriteHeight() returned wrong values when ClipSprite() was used
- Fixed: MessageRequester() over a console window sent the console window to the back
- Fixed: SetGadgetState() for ListIconGadget() stealed the current focus
- Fixed: Base64Encoder() produced wrong output sometimes
- Fixed: Refresh problem with Frame3DGadget() and #PB_Frame3D_Single/Double flags
- Fixed: GDI resource leak in ButtonImageGadget() and ImageGadget()
- Fixed: RotateSprite3D was using a wrong angle
- Fixed: DisableMenuItem() didn't work with #PB_Any
- Fixed: GadgetWidth() didn't work correctly for SpinGadget()
- Fixed: Date() returned wrong result for the 1970,1,1,0,0,0 case
- Fixed: CallFunctionFast() accepted only 17 parameters instead of 20
- Fixed: OpenWindowedScreen() with AutoStretch mode missed some pixels
- Fixed: Some refresh bug with PanelGadget()
- Fixed: Transparent color error with 32 bits screen and 'texture' sprites
- Fixed: Some small bugs in the IDE
- Fixed: Several compiler bugs (string concatenation, interfaces in procedures)

01/25/2005 : PureBasic V3.92 (Linux)
- 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

10/25/2004 - PureBasic V3.92 (Windows)
- Added: CalendarGadget() and DateGadget(), thanks to Fr34k !
- Added: LibraryID(), SwapElements()
- Added: SaveSprite() now have an optional 'Flags' parameter and can now save 8 bits sprite/screen
- Added: Doubleclick on windows background now generate an event (Thanks to Rings)

- Optimized: ListCount() and ListIndex() are now very fast (no full list iteration anymore).

- Changed: DeleteElement() now always goes back to the previous element (can be outside the list if it was the first element), to be fully compatible with ForEach. An optional flag has been added to preserve previous behaviour.
- Changed: the application current directory isn't anymore touched by any PureBasic command to conform to Windows rules.

- Fixed: CloseWindow() bug when using the 'ParentWindow' OpenWindow() parameter
- Fixed: IsSound() wasn't available in NT4 mode
- Fixed: AddDate() could fail depending of the computer time zone
- Fixed: Memory leak with linkedlists, arrays and local variables when using a structure with strings
- Fixed: SaveSprite() default value for JPEG saving is now '7'.
- Fixed: DisplayPalette() failed on XP systems (1st and last color remained unchanged)
- Fixed: ImageGadget() now supports ToolTips and bitmap/icon live switching
- Fixed: ImageButtonGadget() now supports skinning and bitmap/icon live switching
- Fixed: SetGadgetItemText() for ListViewGadget() destroyed the item user data
- Fixed: CopyImage() failed on WinNT4 under some conditions
- Fixed: A memory leak in SendNetworkFile(). Now, it returns 1 on success or 0 on failure.
- Fixed: StatusBarText() didn't refresh the statusbar with the 'Borderless' flag
- Fixed: CatchImage() with #PB_any
- Fixed: the PNG decoder nows handle corrupted PNG safely
- Fixed: the JPEG encoder with quality value inferior to 3 could lead to a crash
- Fixed: a little TreeGadget() bug when checkboxes were activated
- Fixed: Packer compression routine was sometimes hanging on some files
- Fixed: OnError library wasn't useable in a DLL (thanks to Rings)
- Fixed: Litteral string concatenation were wrong in some cases
- Fixed: The compiler didn't returned a non zero exit code if an error occured
- Fixed: Several compiler bugs

07/16/2004 - PureBasic V3.91 (Linux)
- Added: #PB_Any for all libraries which supports it on Windows
- Added: Compress routine for the Packer library
- Added: DisplayShadowSprite(), DisplayAlphaSprite(), ChangeAlphaIntensity()
- Added: IPString(), MakeIPAddress()
- Added: DirectoryEntryAttributes()
- Added: Set/GetWindowTitle()
- Added: 8bits BMP RLE support for all images related commands
- Added: IsDatabase(), IsFile(), IsFont(), IsDirectory(), IsGadget(), IsImage(), IsLibrary(), IsMenu(), IsModule(), IsMovie(), IsPalette(), IsSprite(), IsSprite3D(), IsStatusBar(), IsSysTrayIcon(), IsToolBar(), IsWindow()

- Updated: Database library

- Fixed: FileSize() which doesn't returns the right values
- Fixed: NextSelectedFile() to behave like the Windows command
- Fixed: OpenSubMenu()
- Fixed: ColorRequester() returned a wrong value
- Fixed: Box() command when used with SpriteOutput() or ScreenOutput()
- Fixed: CatchSprite() was not decoding a all BMP properly
- Fixed: Linker bug when using InitCDAudio() alone
- Fixed: SpinGadget() was displaying some GTK warning
- Fixed: EditorGadget() when put in ContainerGadget() or SplitterGadget()
- Fixed: Round() was missing
- Fixed: DrawingBufferPixelFormat() which returned a wrong value
- Fixed: PanelGadget(): GetGadgetState() and SetGadgetState() wasn't supported
- Fixed: GadgetX(), GadgetY(), GadgetWidth() and GadgetHeight() for some gadgets
- Fixed: ResizeWindow()
- Fixed: a bug in WindowEvent()
- Fixed: #PB_EventType_Change and #PB_EventType_Focus for StringGadget() and ComboBoxGadget()
- Fixed: event for PanelGadget()

07/04/2004 - PureBasic V3.91 (Windows)
- Added Desktop library
- Added IsDatabase(), IsFile(), IsFont(), IsDirectory(), IsGadget(), IsImage(), IsLibrary(), IsMenu(), IsModule(), IsMovie(), IsPalette(), IsSprite(), IsSprite3D(), IsStatusBar(), IsSysTrayIcon(), IsToolBar(), IsWindow()
- Manifest file (for XP skins) is now included in the exe
- Changed the LCC resource compiler and linker to PellesC one
- Added: 'Main source' support in the IDE for multifile projects
- Added: Debugger check for empty list element access

- Changed: WindowMouseX() and WindowMouseY() now returns the coordinates in the window client area (DesktopMouseX() now replaces the old behaviour).

- Fixed: AddDate() bug
- Fixed: MDIGadget resize when a StatusBar was added after the MDI creation
- Fixed: InputPathRequester() which could crash on Win98 in some circumstances
- Fixed: OpenWindowedScreen() position when used within container gadgets
- Fixed: Trim() in expression
- Fixed: a crash which could randomly occurs at the very end of the program when OpenHelp() was used.
- Fixed: a bug in PlayMovie() which could hide the movie on some configuration
- Fixed: Compiler bug when accessing a deeply nested structure array.

04/12/2004 - PureBasic V3.90 (Windows)
- Added: #PB_Any support (dynamic numbering) for DataBase, File, Font, FileSystem, Gadget, Image, Library, Module, Movie, Palette, Sprite, Sprite3D, SysTray, ToolBar, StatusBar and Window
- Added: CountString(), KeyboardInkey(), GetWindowTitle(), SetWindowTitle(), ElapsedMilliseconds()
- Added: RemoveGadgetColumn(), SetGadgetAttribute(), GetGadgetAttribute(), SetGadgetItemAttribute(), GetGadgetItemAttribute()
- Added: MDIGadget() by Fr34k
- Added: VerticalBlank support for FlipBuffers() (and works in windowedmode too)
- Added: Autosize for StatusBar and ToolBar (no more callback needed)
- Added: New size handler by Fr34k which allow realtime window sizing (with #PB_Event_SizeWindow) without callback !
- Added: New 'z' optional parameter to TransformSprite3D()
- Added: Several new flags for SplitterGadget() for better flexibility
- Added: SetGadgetAttribute() support for ScrollAreaGadget() to resize the inner area.
- Added: Joystick and Module support for NT4 compatibility mode
- Added: Hexadecimal display, clear-copy-save debug output and window position saving to the debugger
- Added: Support for different depth icons for the default program icon
- Added: IDE features: Interface viewer, new MS SDK support, find in files, line numbering
- Added: 'Static' keyword for local variables (in procedures) which need to be persistent
- Added: Last FAsm (assembler) version, which has some speed improvement and fix a bug on big sources
- Added: QuickHelp support in the Purebasic IDE for most of the API functions !

- Changed: no more #Memory ID and flag for AllocateMemory()
- Changed: CDAudioName() doesn't need an ID anymore, as stated in the docs.

- Splitted CDAudio, Database, File, Network, StatusBar and Systray libraries

- Removed: UpdateStatusBar(), UseMemory(), MemoryID()

- Fixed: French documentation is now perfectly up to date
- Fixed: NT4 (DirectX 3) support for Sprite, Palette, Sound, Keyboard and Mouse libraries
- Fixed: Bug in CreateSprite3D(), the width and height was 1 pixel wider
- Fixed: Bug with SpritePixelCollision if the same sprite was used for both collisions.
- Fixed: Bug in the debugger with win98 (application window was in background)
- Fixed: OpenWindowedScreen() didn't take the menu height in count (if any)
- Fixed: IsFilename() missed some checks
- Fixed: Several expression parser bugs in the compiler
- Fixed: SizeOf() when used with extended structures
- Fixed: NewPrinterPage() bug on Win98
- Fixed: CloseScreen() when used with Sprite3D library
- Fixed: Several paths problems when using the compiler in console mode
- Fixed: All requesters now locks all the opened windows

01/01/2004 - PureBasic V3.81 (Linux) - Happy New Year!
- Added
Sort library
- Added
Toolbar library
- Added
StatusBar library
- Added
Font library
- Added full 3D engine support
- Added $PUREBASIC_HOME env variable to specify the install path
- Added ElapsedMilliseconds()
- Added CatchSprite(), CreateSprite(), SpriteOutput() and ScreenOutput()
- Added 2DDrawing support for ScreenOutput() and SpriteOutput() with very fast direct video buffer access
- Added SplitterGadget(), ContainerGadget(), ScrollAreaGadget(), IPAddressGadget(), EditorGadget()
- Added ScrollBarGadget(), SpinGadget(), TrackBarGadget(), HyperLinkGadget(), ExplorerListGadget()
- Added GetGadgetItemState(), SetGadgetItemState(), GetGadgetItemText(), SetGadgetItemText()
- Added BMP, JPEG, PNG, TIFF and TGA decoder support for LoadImage() and LoadSprite()
- Added BMP, JPEG and PNG encoder for SaveImage()
- Added SaveImage(), CopyImage(), GrabImage()
- Added CopySprite(), GrabSprite(), UseBuffer(), DisplayTranslucideSprite(), DisplayRGBFilter()
- Added WindowID(#Window), WindowOutput()
- Added PathRequester(), InputRequester()
- Added DisableMenuItem(), GetMenuItemState(), SetMenuItemState(), MenuHeight()
- Added CloseTreeGadgetNode(), UseGadgetList(), SetGadgetFont(), ButtonImageGadget()
- Added DayOfYear(), SelectedFontStyle()
- Added XOR and unfilled shape support for 2DDrawing
- Added NextSelectedFileName()
- Added StrU(), CopyFile()
- Added pattern matching to ExamineDirectory()

- Splitted the Gadget library
- Splitted the Sprite library

- Compiler updated to 3.81 with Enumeration, Interface, modulo and more...

This update is available for free to all registered users, just send a mail to support@purebasic.com with your personnal infos and your registration mail. Thanks a lot !

12/09/2003 - PureBasic V3.81 (Windows)
- Added: DatabaseUpdate(), DatabaseError()
- Added: Play/Stop/Resume/PauseMovie() support for sprite rendered movies
- Added: 'Extends' support for 'Structure'
- Added: Icon support and live image resize for DrawImage()
- Added: 2, 16 and 256 colors BMP support for Catch/LoadSprite()
- Added: #PB_Default support for DrawingFont()
- Added: Added Japanese support for Gadget library, editor and Visual Designer
- Added: Excellent SmartUpdate tool from fr34k to update quicky any PureBasic version
- Added: Last version of the Visual Designer by Berikco

- Optimized: ExplorerGadgets are now 5x faster for directories scanning

- Changed: Labels are no more case-sensitive
- Changed: Default quality for SaveImage() and JPEG plugin is now '7'
- Changed: InitModule() and InitPalette() doesn't need the maximum parameter anymore
- Changed: PlayMovie() behaviour has changed for rendered movies

- Fixed: A memory leak in Sprite rendered movies
- Fixed: Requesters commands could lock other applications if no window were opened
- Fixed: Some interfaces definitions was wrong in the Residents
- Fixed: String constants with multiple constants items
- Fixed: KeyboardReleased(#PB_Key_All) wasn't working
- Fixed: Compiler bug with Interface in procedure and with string returns
- Fixed: ProcedureDLL bug when a string return type was specified
- Fixed: CopySprite() didn't work with Alpha-Sprites
- Fixed: Bug in the compiler optimizer with bytes and word in some very rare cases
- Fixed: JPEG and TIFF decoder bug in rare situation
- Fixed: Small EditorGadget() and SpinGadget() bugs

10/06/2003 - PureBasic V3.80 (Windows)
- Added: ExplorerComboBoxGadget()
- Added: CameraProjection(), CameraBackColor() and CameraRange()
- Added: The modulo operand: '%'
- Added: ForEach command to iterate linkedlists quickly
- Added: Interface/EndInterface to support object function call ! Yes, COM and DX objects are now accessible natively in PureBasic...
- Added: Big residents files with all Windows/DirectX interfaces ready to use !
- Added: Break and Continue to modify the loops flow
- Added: Enumeration/EndEnumeration to quickly declare a lot of sequential constants
- Added: OffsetOf() to get the offset of a structure or interface field
- Added: SizeOf() now supports variables and Interfaces
- Added: Interface, Float and String constants support to the 'Resident' file format
- Added: Quality support for SaveImage() and the JPEG encoder
- Added: MessageRequester() 'Flags' is now an optionnal parameter
- Added: The Editor syntax coloring and structure viewer have been greatly enhanced

- Optimized: Removed many OGRE's dependencies resulting in a smaller Engine3D.DLL

- Changed: Constants are back real constants now (use Enumeration to have dynamic constants)

- Fixed: ASM registers display in the Debugger
- Fixed: IncludePath problems with IncludeBinary
- Fixed: Couldn't use TAB inside an editable ComboBoxGadget()
- Fixed: DeleteDirectory() failed with a read-only directory in 'Force' mode
- Fixed: TGA decoder bug for Top/Down and RLE pictures
- Fixed: Possible lock in the AddPackFile() and PackMemory() routines
- Fixed: the structure size when the structure was very big (over 32000 bytes)
- Fixed: Int(): a negative value could produce wrong results
- Fixed: A LinkedList issue when it was used in and outside a Procedure
- Fixed: Line() and LineXY() was not drawing the last point
- Fixed: debugger checks: InitEngine3D()
- Fixed: A bug in TextLength() when an empty string was used
- Fixed: ProcedureReturn bug when used in 'Select String$' expression
- Fixed: Sounds were limited to 50 when debugger was activated
- Fixed: ClipSprite() wasn't supported by DisplayAlphaSprite(), DisplayShowSprite(), DisplaySolidSprite() and DisplayTranslucideSprite()
- Fixed: A reserved keyword like 'Data' couldn't be used in a Structure
- Fixed: CreatePack(), SaveImage() and SaveSprite() didn't work with very long filename
- Fixed: Inkey() was halting the program flow
- Fixed: FileSize() returned wrong value on Win9x for root directories
- Fixed: An editor bug which caused panel tab inversion

07/14/2003 - PureBasic V3.72 (Windows)
- Changed: SelectedFilePattern() pattern index is now '0' based instead of '1' based. Warning !
- Changed: ListIndex() is now '0' based instead of '1' based. Warning !

- Updated: IDE: find/replace updated, an '*' now identify a modified file
- Updated: Toolbar library has been splitted and optimized
- Updated: all missing libraries quickhelps (status bar of the editor)

- Fixed: ParseDate() when no separators were used in the date
- Fixed: ResizeImage() has now a nice quality resampling
- Fixed: several gadget events issue (Splitter, Panel)
- Fixed: PNG and JPEG decoder in some rare cases
- Fixed: the name of several functions (OnError library)
- Fixed: several compiler bugs

06/07/2003 - PureBasic V3.70 (Windows)
- Added: Terrain library
- Added: Billboard library
- Added: Entity library
- Added: Material library
- Added: Particle library
- Added: OnError library
- Added: CameraLookAt(), CameraRenderMode(), CameraFOV(), Engine3DFrameRate(), CountRenderedTriangles()
- Added: CreateMesh(), SetMeshData()
- Added: ExamineLibraryFunctions(), NextLibraryFunction(), LibraryFunctionName(), LibraryFunctionAddress()
- Added: IsFunctionEntry(), CallCFunction(), CallCFunctionFast()
- Added: RenderMovieFrame(): Yes, you can play a movie on a sprite or on a screen !
- Added: OpenGadgetList(), ScrollBarGadget(), ScrollAreaGadget(), SplitterGadget()
- Added: HyperLinkGadget(), ContainerGadget(), EditorGadget()
- Added: TreeGadgetItemNumber(), ExplorerListGadget(), ExplorerTreeGadget()
- Added: #PB_FontRequester_Effects flag for the FontRequester()
- Added: PanelGadget() has been fully rewritten and is now XP theme compliant
- Added: TreeGadget() has been rewritten to support dynamic items (add, remove..)
- Added: AddGadgetItem() now support picture for the PanelGadget()
- Added: 'ParentID' optional parameter to OpenWindow()
- Added: CDecl support for PureFunctions and procedures (Added 'ProcedureCDLL' and 'DeclareCDLL' keyword)
- Added: End [ExitCode] optional parameter
- Added: More precise error message for Assembly and Linker errors
- Added: /LINENUMBERING compiler switch
- Added: Full debugger support for the 3D engine
- Added: ComboBox support for GetGadgetItemText() and SetGadgetItemText()
- Added: Many new functions for the Visual designer including Tab order, font selection, new gadgets and more..

- Changed: Mesh library, introduced a new Entity one (for more flexible control)
- Changed: ClosePanelGadget to CloseGadgetList()
- Changed: Inline assembly labels are now l_label instead of pLabel

- Splitted and optimized the Movie library

- Fixed: SpriteCollision() and SpritePixelCollision() was 1 pixel wrong
- Fixed: Result code for CopyDirectory was wrong in some case
- Fixed: StrF(): if a digit number is specifed it rounds correctly
- Fixed: Several debugger warning was missing
- Fixed: Floats and integers were badly mixed in some case

03/25/2003 - PureBasic V3.62 (Windows)
- Removed: FakeEndSelect

- Fixed: Several compiler bugs
- Fixed: Small bug in the PNG encoder and decoder
- Fixed: ProcedureReturn inside Select/EndSelect
- Fixed: Array allocation if no memory was available
- Fixed: Int(): broken since v3.60
- Fixed: Val(): now accepts any BASIC valid forms
- Fixed: AddPackFile() problem on some files
- Fixed: RunProgram() with very long paths

03/19/2003 - PureBasic V3.61 (Windows)
- Fixed: Major compiler array bugs
- Fixed: Major MD5FileFingerprint() bug
- Fixed: Syntax Highlightning for command/procedure and Alt+V shortcut
- Fixed: 2 bugs in the Visual Designer
- Fixed: Sprite loading and image plugin (JPEG, PNG) in 16 bits mode
- Fixed: XOR inline asm keyword was no more recognized
- Fixed: TGA decoder on some files

03/17/2003 - PureBasic V3.60 (Windows)
- Added: Powerful Visual Designer, to easily creates graphical applications
- Added: Many new optimizations in the compiler core, resulting in faster/smaller code (especially when dealing with arrays and structured variables)
- Added: Native JPEG, TIFF, PNG and TGA image/sprite decoder trough plugin
- Added: Native JPEG and PNG image/sprite encoder trough plugin
- Added: Native OGG sound decoder trough plugin
- Added: AvailableScreenMemory(), SelectedFilePattern(), DefaultPrinter()
- Added: Flags for LoadFont() to allow italic, bold and more
- Added: Multisource support for the debugger (Included files)
- Added: Array overflow debugger check
- Added: Data read overflow debugger check
- Added: Icon support for CatchImage()
- Added: MMX, 3DNOW, SSE and SSE2 optional support, with autoselect mode (to choose automatically the right routine at runtime, depending of the processor).
- Added: DLL Importer tool in the Library SDK

- Splitted: Font, Gadget and Window libraries, for smaller executable (Thanks to Danilo)

- Removed: CatchJPEGSPrite() and LoadJPEGSprite() (replaced by plugins)

- Enhanced the PureBasic library format (new compressed format)
- Enhanced Inline ASM now accept FPU opcode
- Enhanced the editor: DoubleClik on (X)IncludeFile open the file, Inline Help works for all keywords (If/EndIf..) ASM syntax coloring, Inline ASM help

- Changed: SetGadgetFont() now takes 2 parameters, to allow runtime font change

- Fixed SortArray() when sorting string in case insensitive mode
- Fixed the RunProgram() command with 3 args
- Fixed ImageOutput() problem with Windows 98
- Fixed the 16bits sprite display problem with some old gfx cards which use 15 bits internally
- Fixed some bugs in the compiler

02/10/2003 - PureBasic V3.50 (Linux)
- Added: Date library
- Added: Joystick library
- Added: Library library
- Added: Packer library (decompress only)
- Added: #PB_Compiler_OS and #PB_Compiler_Date
- Added: WriteFloat(), ReadFloat(), RunProgram()
- Added: Base64Encoder(), MD5FileFingerPrint(), CRC32FingerPrint()
- Added: PeekF(), PokeF(), ProgramParameter(), OSVersion()
- Added: RSet(), LSet(), RemoveString(), Bin(), StringField()

- Updated: Compiler core to v3.50 (including Fasm)
- Updated: Resident file
- Updated: Documentation

- Fixed Loc() and Lof() if no current file are opened

01/13/2003 - PureBasic V3.51 (Windows)
- Updated French documentation for v3.51

- Fixed some bugs in the compiler and optimized a bit the output
- Fixed IPString() and IPAddressField() was in the reversed order
- Fixed and improved the InputRequester() by adding keyboard shortcut
- Fixed ReadPreferenceLong/String/Float() to accept spaced keywords
- Fixed MouseButton beep problem in full screen mode
- Fixed Date() and ParseDate() when an invalid date was specified
- Fixed the editor XP-Theme problem
- Fixed the editor ProcedureBrowser (Thanks to Dominique and Plouf)
- Fixed OpenWindow() dimension when no flag where specified

- Removed the Gosub/Return check introduced in v3.50 (for flexibility reason)

01/06/2003 - PureBasic V3.50 - (Windows) :
- Added: Engine3D Library
- Added: Camera Library
- Added: Light Library
- Added: Mesh Library
- Added: Texture Library
- Added: WriteFloat(), ReadFloat(), MouseLocate(), MD5FileFingerprint()
- Added: STDCALL and ANY flags to PureLibraries. See SDK doc for more informations
- Added: TreeGadget checkboxes support for GetGadgetItemState()
- Added: SetGadgetState() now work for ButtonImageGadget()

- Updated: CallFunction() and CallFunctionFast(): Floats can be passed directly
- Updated: SetStatusBarText() 'Appareance' parameter is now optional
- Updated: Frame3DGadget() 'Flags' parameter is now optional

- Optimized: CallFunctionFast() (2x faster)
- Optimized: Code generation: Speed and size enhancements

- Changed: The assembler (FASM), resulting of better optimized code (ie: PB Editor is 6 kb smaller)
- Changed: LSet() by RSet() and RSet() by LSet() (was reversed compared to normal Basic functions)
- Changed: OpenTreeGadgetNode() and CloseTreeGadgetNode() (now need a parameter)
- Changed: ReleaseMouse() now takes one parameter

- Fixed: the game mouse support in windowed mode (could lead to computer lock)
- Fixed: SelectElement() was wrong when passing -1..
- Fixed: TreeGadget() when used several times on the same window
- Fixed: SaveImage() with 16bits and 8bits desktops
- Fixed: RSet() with 2 arguments
- Fixed: a little bug in ParseDate()
- Fixed: AddPackFile() and AddPackMemory(): buffer overflow in some rare cases
- Fixed: OpenFileRequester() with MultiSelection mode
- Fixed: a silly bug when using many images in the gadget items (TreeGadget, ListIconGadget...)
- Fixed: Cipher library

10/09/2002 - PureBasic V3.40 (Windows) :
- Changed: Structure names aren't case sensitive anymore (could produce difficult bug to look at)

- Added: Date library
- Added: Hostname(), ExamineIPAddresses(), NextIPAddress(), IPString()
- Added: LSet(), RSet(), Bin(), RemoveString(), StringField()
- Added: ModuleVolume(), OSVersion(), WaitThread()
- Added: CopyDirectory(), DeleteDirectory(), IsFilename()
- Added: NextSelectedFileName(), InputRequester()
- Added: DrawingBuffer(), DrawingBufferPixelFormat(), DrawingBufferPitch(), FillArea()
- Added: #PB_Compiler_Date, #PB_Compiler_OS compiler buildin constants

- Splitted libs: FileSystem, StringExtension, Date

- Updated: RunProgram() now has an optional WorkingDirectory$ parameter
- Updated: SetGadgetFont(#PB_Font_Default) now go back to default font
- Updated: 2 news flags for OpenWindow()
- Updated: GetGadgetItemText() and SetGadgetItemText() now works for TreeGadget()
- Updated: ReplaceString now have a new 'StartFrom' optionnal parameter
- Updated: SetGadgetState() can be used with ImageGadget() to change the current image
- Updated: Added 'Level' flag for Pack commands to have faster compression
- Updated: DLL AttachXXX() commands must have an 'Instance' parameter
- Updated: no more '_' when creating a DLL

- Fixed: Debugger problem in the FileSystem library
- Fixed: ReadPreferenceLong() and ReadPreferenceFloat()
- Fixed: SpriteOutput() bug when using Plot()
- Fixed: CDAudioTrackLength(): last track returned always 0..
- Fixed: OpenWindowedScreen(): bad BottomOffset and RightOffset values
- Fixed: GetPathPart(), GetFilePart() and GetExtensionPart()
- Fixed: SetGadgetText() when used with a ComboBox and an empty string (clear the combobox content)
- Fixed: SetClipboardText(), now use the TEXT instead of OEM format.
- Fixed: Compiler didn't warn when a Global variable was used in Procedure parameter.
- Fixed: Compiler bugs in InlineASM : 'MOV eax, "String"' and 'MOV eax, #CONSTANT' were wrong
- Fixed: Compiler bug when using negative float constant
- Fixed: Compiler bug when using float operations with API functions
- Fixed: Compiler bug when comparing string with numeric (now forbidden)
- Fixed: Compiler bug when using INCLUDEBINARY in DataSection
- Fixed: Compiler bug when DECLARE and PROCEDURE didn't match (no errors were generated)
- Fixed: Compiler bug when DEBUG was used in procedures with strings operations

- Editor enhanced (Multi files, Procedure browser, custom tools...) and OpenSource. Thanks to Danilo !