11.Oktober 2023

PureBasic 6.03 LTS

- Hinzugefügt: #PB_String_NoCaseAscii Unterstützung für CompareMemoryString(), um einen viel schnelleren String-Vergleich zu haben, wenn nur ASCII-Zeichen involviert sind
- Hinzugefügt: #PB_Compiler_DPIAware Compiler-Konstante.

- Aktualisiert Scintilla auf 5.3.5 für alle Plattformen
- Optimiert: Kleinere und besser lesbare C generierte Datei.
- Geändert: IDE auf Linux verwendet jetzt standardmäßig GTK3 (die GTK2 IDE lautet purebasic_gtk2)

- Repariert: viele Bugs im Compiler und den Bibliotheken

17.Mai 2023

PureBasic 6.02 LTS

- Hinzugefügt: HttpTimeout() zum Festlegen eines Verbindungs- und eines globalen Timeouts für HTTP-Befehle.
- Hinzugefügt: GTK3 IDE Build auf Linux zum Testen (purebasic_gtk3).
- Hinzugefügt: ReAssembly (--reasm) Unterstützung für OS X und Linux.

- Aktualisiert: libarchive auf 3.6.2
- Aktualisiert: lib7z auf 22.01

- Entfernt: EnableASM Unterstützung für das C-Backend, da es nicht korrekt verwendet werden kann (die IDE wandelt die Buchstaben für If in Großbuchstaben um, etc.) und die Erkennung eines echten x86/x64-ASM-Blocks verhindert, was zu seltsamen Fehlern führt. Der richtige Weg besteht jetzt darin, das '!' Zeichen am Zeilenanfang zu nutzen, um direkt C-Code zu verwenden.

7.March 2023

PureBasic 6.01 LTS

- Hinzugefügt: #PB_Mail_UseSMTPS und #PB_Mail_Debug für CreateMail()

- Aktualisiert: GCC auf Windows für das C-Backend auf die 12.2.0 Version

- Repariert: viele Bugs im Compiler und den Bibliotheken

22.Juni 2022

PureBasic 6.00 LTS

- Hinzugefügt: Apple M1 Support !
- Hinzugefügt: Raspberry Support (32-Bit und 64-Bit) !
- Hinzugefügt: ein neuer C-Backend-Compiler für alle PureBasic-Versionen
- Hinzugefügt: #PB_Compiler_Backend, #PB_Backend_C und #PB_Backend_Asm Compiler-Konstanten
- Hinzugefügt: #PB_Compiler_64Bit und #PB_Compiler_32Bit Compiler-Konstanten
- Hinzugefügt: #PB_Compiler_Optimizer Konstante - welche auf #True gesetzt ist, wenn der Optimizer eingeschaltet ist
- Hinzugefügt: Support für Windows 11, OS X 11 und 12 bei OSVersion()
- Hinzugefügt: /OPTIMIZER, -z, --optimizer Flag bei Nutzung der Kommandozeile, und eine 'Code-Optimizer verwenden' Checkbox in den IDE 'Compiler-Optionen', um die C Optimierungen einzuschalten
- Hinzugefügt: auto DPI support for Menu and ToolBar library (Windows)
- Hinzugefügt: WebGadget() Support für GTK3 auf Linux
- Hinzugefügt: CreateShader(), CreateShaderMaterial(), MaterialShaderAutoParameter(), MaterialShaderParameter(), MaterialShaderTexture()
- Hinzugefügt: optionaler Parameter bei MeshFace() zum Erstellen eines Vierecks (Quads)
- Hinzugefügt: optionaler Gravitationskraftvektor bei WorldGravity()
- Hinzugefügt: optionaler PositionsModus bei ApplyEntityForce()
- Hinzugefügt: GetEntityMesh(), CreateCubicTexture(), CreateAnimatedMaterial()
- Hinzugefügt: neuer Modus bei CreateDataMesh(): #PB_Mesh_DiagonalShortestLength, #PB_Mesh_DiagonalClosestNormal, #PB_Mesh_DiagonalAlternate, #PB_Mesh_DiagonalRegular1, #PB_Mesh_DiagonalRegular2
- Hinzugefügt: neue Strukturen: Vector3, Vector4
- Hinzugefügt: vordefinierte Shader: #PB_Material_ColorShader, #PB_Material_PerpixelShader, #PB_Material_BumpShader, #PB_Material_SkyShader, #PB_Material_WaterShader, #PB_Material_WaterShaderRTT, #PB_Material_OceanShader, #PB_Material_PointSpriteSphereShader
- Hinzugefügt: neue Modi bei SetMaterialAttribute(): #PB_Material_PointSprite, #PB_Material_DepthBias
- Hinzugefügt: neuer optionaler 'Farbe' Parameter bei CreateMaterial()
- Hinzugefügt: neuer optionaler 'Glanzfarbe' Parameter bei MaterialShininess()
- Hinzugefügt: neue optionale 'v' und 'w' Parameter bei MeshVertexTextureCoordinate()
- Hinzugefügt: neuer optionaler 'Lod' Parameter bei CreateCamera()
- Hinzugefügt: neue Modi bei AddMaterialLayer(): #PB_Material_ModulateX2, #PB_Material_ModulateX4, #PB_Material_AddSigned, #PB_Material_Substract, #PB_Material_BlendDiffuseAlpha, #PB_Material_BlendCurrentAlpha
- Hinzugefügt: Neue kontextbezogene Konstantenanzeige für Auto-Complete in der IDE (Fr34k)
- Hinzugefügt: 3 neue Trigger für benutzerdefinierte Werkzeuge in der IDE: 'Datei öffnen - nicht-PB Binärdatei', 'Datei öffnen - nicht-PB Textdatei', 'Datei öffnen - mit spezieller Dateiendung' (HeX0R101)
- Hinzugefügt: Neues 'Ersetzen' Tastenkürzel (CTRL+H) in der IDE, welches den Finden-Dialog mit aktiviertem Ersetzen-Modus öffnet (ChrisRfr)

- Aktualisiert: SetMaterialColor() kann jetzt mittels '|' mehrere Farbtypen auf einmal nutzen
- Aktualisiert: fasm, polink, polib und porc auf die neuesten Versionen (Windows)
- Aktualisiert: Movie library on OS X to support modern OS X version
- Aktualisiert: Mouse library on Windows to use RawInput instead of DirectX to support HighDPI mouse
- Aktualisiert: SQLite to 3.38.2
- Aktualisiert: zlib to 1.12.12
- Aktualisiert: libpq (PostgreSQL) to 14.2

- Geändert: umbenannte Strukturen PB_MeshFace -> MeshFace und PB_MeshVertex -> MeshVertex
- Geändert: der Name des /EXE Kommandozeilen-Flags in /OUTPUT um kohärenter zu sein (das alte Kürzel funktioniert noch für die Rückwärtskompatibilität, ist aber nicht mehr dokumentiert)
- Geändert: die kurze Version von /CONSTANT von '-o' in '-co' da '-o' jetzt für /OUTPUT genutzt wird
- Geändert: die Art und Weise, wie die Map-Elemente erstellt werden, wenn passiver Syntax verwendet wird, um konsistenter zu sein
- Geändert: Das Standard-Subsystem für Screen/Sprite ist jetzt OpenGL unter Windows für mehr Konsistenz. DirectX9 ist weiterhin als Subsystem verfügbar.
- Geändert: enabled backface culling for sprite OpenGL subsystem to be faster and be in line with DirectX9/11
- Geändert: InitNetwork() is no more needed to use network functions (deprecated)

- Entfernt: x86 Version von PureBasic für OS X, da sie seit OS X Catalina nicht mehr unterstützt wurde (das älteste unterstützte OS X ist jetzt 10.10 - veröffentlicht in 2014).
- Entfernt: die 'Help' Bibliothek auf Linux
- Entfernt: Nvidia CG Support für OGRE, da es von Nvidia seit einiger Zeit nicht mehr unterstützt wird
- Entfernt: ToolBarStandardButton() as it doesn't support high DPI

23.November 2020

PureBasic 5.73 LTS

- Hinzugefügt: #PB_HTTP_WeakSSL bei HTTRequest() um ältere Server zu unterstützen
- Hinzugefügt: #PB_HTTP_Debug zum Ausgeben von Debug-Informationen in der Konsole
- Hinzugefügt: Neue Einrückungs-Option (Shardik)
- Hinzugefügt: Option zum automatischen Umbruch der Suche am Dateiende (kenmo)
- Hinzugefügt: Neue Editor-Tastenkürzel (Groß-/Kleinschreibung und deren Umkehrung)(kenmo)

- Aktualisiert: SQLite auf Version 3.33.0

- Repariert: Auto-Vervollständigung auf Linux (mk-soft)
- Repariert: IDE-Absturz auf MacOS mit TouchBar (mk-soft)
- Repariert: Einige Bugs im Compiler und den Bibliotheken

30.März 2020

PureBasic 5.72 LTS

- Hinzugefügt: #PB_HTTP_Headers zu HTTPInfo(), um die Kopfzeilen (Header) zu erhalten
- Hinzugefügt: #PB_HTTP_HeadersOnly zu HTTPRequest(), um nur die Kopfzeilen anzufordern (GetHTTPHeaders() ist jetzt veraltet)
- Hinzugefügt: Scintilla Wortzeichen-Auswahl als Benutzereinstellung in der IDE (kenmo)
- Hinzugefügt: Zoom-Tastaturkürzel in der IDE (kenmo)
- Hinzugefügt: Neue Editor-Tastenkürzel-Funktionen in der IDE (kenmo)
- Hinzugefügt: Memview (idle)

- Geändert: PostEvent() gibt jetzt ein Ergebnis zurück, da es in einigen extremen Fällen fehlschlagen kann.
- Geändert: Sign() gibt jetzt eine Ganzzahl anstelle einer Fließkommazahl zurück.

- Aktualisiert: OpenJPEG Bibliothek auf Version 2.3.1
- Aktualisiert: PCRE Bibliothek auf Version 8.44
- Aktualisiert: libpng auf Version 1.6.37
- Aktualisiert: libjpeg auf Version 9d
- Aktualisiert: libtiff auf Version 4.1.0
- Aktualisiert: expat auf Version 2.2.9
- Aktualisiert: libflac auf Version 1.3.3
- Aktualisiert: libogg auf Version 1.3.4
- Aktualisiert: libvorbis auf Version 1.3.6
- Aktualisiert: sqlite auf Version 3.31.1
- Aktualisiert: curl auf Version 7.68.0

- Repariert: 'Vorheriges suchen' Einfrieren der IDE (kenmo)
- Repariert: Drag'n'Drop Position von Gadgets im FormDesigner (ChrisR)
- Repariert: Fehler beim erneuten Aktivieren von Schaltflächen im Fenster 'Suchen in Dateien' in der IDE (Sicro)
- Repariert: Anzeige-Fehler im Fenster '#WINDOW_Form_Parent' des FormDesigners (Sicro)
- Repariert: Viele Verbesserungen an der Dokumentation (Andre und Mesa)
- Repariert: Einige Bugs im Compiler und den Bibliotheken

16.August 2019

PureBasic 5.71 LTS

- Repariert: Einige Bugs im Compiler und den Bibliotheken

2.Januar 2019

PureBasic 5.70 LTS

- Hinzugefügt: Brandneues QT Subsystem für Linux
- Hinzugefügt: HTTPRequest(), HTTPRequestMemory() (gesponsert von c-wayne)
- Hinzugefügt: UseMySQLDatabase() (gesponsert von Paul)
- Hinzugefügt: Unterstützung für DPI-Erkennung bei Windows-Programmen
- Hinzugefügt: #PS, #NPS, #PS$ and #NPS$ Konstanten (Pfadtrennzeichen abhängig vom Betriebssystem)
- Hinzugefügt: #PB_JSON_NoClear Unterstützung bei ExtractJSONStructure
- Hinzugefügt: #PB_Path_Winding Füllmodus beim VectorDrawing
- Hinzugefügt: DesktopResolutionX(), DesktopResolutionY(), DesktopScaledX(), DesktopScaledY(), DesktopUnscaledX(), DesktopUnscaledY()
- Hinzugefügt: ein optionaler 'Modus' Parameter für OpenConsole()
- Hinzugefügt: MaterialTextureAliases()
- Hinzugefügt: #PB_Vehicle_IsInContact, #PB_Vehicle_ContactPointX/Y/Z für GetVehicleAttribute()
- Hinzugefügt: #PB_Vehicle_ContactPointNormalX/Y/Z für GetVehicleAttribute()
- Hinzugefügt: #PB_Vehicle_CurrentSpeedKmHour, #PB_Vehicle_ForwardVectorX/Y/Z für GetVehicleAttribute()
- Hinzugefügt: #PB_Material_ProjectiveTexturing für SetMaterialAttribute()
- Hinzugefügt: ParticleScaleRate(), ParticleAngle(), CameraReflection()
- Hinzugefügt: BuildMeshLod(), MeshVertex(), CreateDataMesh()
- Hinzugefügt: EntityDirection(), EntityDirectionX(), EntityDirectionY(), EntityDirectionZ()
- Hinzugefügt: #PB_Local/#PB_Parent/#PB_World Unterstützung für ApplyEntityForce(), ApplyEntityImpulse(), ApplyEntityTorque() und ApplyEntityTorqueImpulse()

- Repariert: Einige Bugs im Compiler und den Bibliotheken

4.Februar 2018

PureBasic 5.62

- Repariert: Einige Bugs im Compiler und den Bibliotheken

7.Januar 2018

PureBasic 5.46 LTS

- Repariert: Einige Bugs im Compiler und den Bibliotheken

12.September 2017

PureBasic 5.61

- Repariert: Das Touchbar-Problem beim neuen MacBook Air und das DebugOutput-Problem auf Windows.
- Repariert: Viele Fehler behoben. Bemerkenswerte Bug-Fixes sind: Prototyp und Quad-Return waren fehlerhaft, MacBook Pro Absturz und OptionGadget unter Windows unterstützt jetzt die Tastatur.
- Aktualisiert: Das MacOS X-Paket ist nun eigenständig ('self-contained'), um kompatibel mit OSX Sierra zu sein.

- Aktualisiert: Diese Version ist mit neuen Zertifikaten signiert, um falsche positive (Antivirus) zu vermeiden.

10.August 2017

PureBasic 5.45 LTS

- Repariert: Das Touchbar-Problem beim neuen MacBook Air und das DebugOutput-Problem auf Windows.
- Repariert: Viele Fehler behoben. Bemerkenswerte Bug-Fixes sind: Prototyp und Quad-Return waren fehlerhaft, MacBook Pro Absturz und OptionGadget unter Windows unterstützt jetzt die Tastatur.
- Aktualisiert: Das MacOS X-Paket ist nun eigenständig ('self-contained'), um kompatibel mit OSX Sierra zu sein.

- Aktualisiert: Diese Version ist mit neuen Zertifikaten signiert, um falsche positive (Antivirus) zu vermeiden.

2.März 2017

PureBasic 5.60

- Hinzugefügt: GIF Decoder Support
- Hinzugefügt: Unterstützung für große Icons und Text in der ToolBar Bibliothek
- Hinzugefügt: SetImageFrame(), GetImageFrame(), ImageFrameCount(), AddImageFrame()
- Hinzugefügt: RemoveImageFrame(), SetImageFrameDelay(), GetImageFrameDelay()
- Hinzugefügt: UserAgent Unterstützung bei ReceiveHTTPMemory(), ReceiveHTTPFile() und GetHTTPHeader()
- Hinzugefügt: #PB_Http_NoRedirect Unterstützung bei GetHTTPHeader()
- Hinzugefügt: 'Joe Doe ' Email-Format Unterstützung bei SendMail()
- Hinzugefügt: HTTPProxy() Proxy-Unterstützung für Http-verwandte Befehle
- Hinzugefügt: Unterstützung für Kompressionslevel bei CreatePack() und CompressMemory()
- Hinzugefügt: ParticleAcceleration(), ParticleColorFader(), ParticleEmitterAngle()
- Hinzugefügt: #PB_Material_AlphaReject, #PB_Material_TAM und #PB_Material_EnvironmentMap Unterstützung für SetMaterialAttribute()
- Hinzugefügt: neuer optionaler Parameter 'Layer' bei SetMaterialAttribute()
- Hinzugefügt: Neue Orientierungsmodi für SetNodeAnimationKeyFrameRotation() und AddStaticGeometryEntity()
- Hinzugefügt: GetUserDirectory() um benutzerspezifische Verzeichnisse zu ermitteln
- Hinzugefügt: Mehr Flexibilität für Base64Decoder zum Umgang mit 'non-padded' Eingaben
- Hinzugefügt: Base64Encoder() und Base64Decoder(), die Strings als Eingabe/Ausgabe für einfachere Verwendung nutzen (siehe Namensänderung der bisherigen Befehle weiter unten)
- Hinzugefügt: Farb-Konstanten wie #Black, #Blue etc. für alle OS
- Hinzugefügt: Event(), um das aktuelle Ereignis zu erhalten (vor allem nützlich bei Callbacks)
- Hinzugefügt: #PB_Canvas_Container Unterstützung, um ein Container-Verhalten für Canvas zu erhalten
- Hinzugefügt: #PB_EventType_Resize Unterstützung für PanelGadget(), ContainerGadget(), CanvasGadget() und ScrollAreaGadget()
- Hinzugefügt: #PB_ListIcon_ColumnCount für GetGadgetAttribute() beim ListIconGadget(), um die Anzahl an Spalten zu ermitteln
- Hinzugefügt: #PB_All support bei RemoveGadgetColumn(), um alle Spalten zu entfernen
- Hinzugefügt: (IDE) Templates werden jetzt beim Erstellen gespeichert, um Verluste bei nicht korrekt geschlossener IDE zu vermeiden
- Hinzugefügt: (IDE) Sprung zu einer Prozedur klappt diese nun automatisch auf, wenn sie zusammengefaltet war
- Hinzugefügt: (IDE) neues spezifisches Popup-Menü für Datei-Reiter, um die Quellcode-Verwaltung zu vereinfachen
- Hinzugefügt: (IDE) Finde vorherigen Suchbegriff (Rückwärts-Suche)

- Geändert: bisherigen Befehl Base64Encoder() in Base64EncoderBuffer() umbenannt
- Geändert: bisherigen Befehl Base64Decoder() in Base64DecoderBuffer() umbenannt
- Geändert: 'define.b' Syntax zum Ändern des Standard-Typs entfernt, da dies schwer zu findende Bugs hervorrufen konnte.

19.Dezember 2016

PureBasic 5.51

- Aktualisiert: MacOS X Paket ist jetzt 'self-contained' (in sich selbst enthalten), um OSX Sierra kompatibel zu sein

- Repariert: Einige Bugs im Compiler und den Bibliotheken

19.November 2016

PureBasic 5.44 LTS

- Aktualisiert: Eine Bug-Fix Version des aktuellen 'LTS'-Branches.
Diese behebt wichtige Linux-Probleme und bringt einen neuen Weg, um die App auf OS X zu installieren, um auch OSX Sierra zu entsprechen. Nun ist das ganze Purebasic-Verzeichnis in die PureBasic.app eingebettet. Wenn Sie daher die die Kommandozeile benutzen möchten, müssen Sie den Pfad PureBasic.app/MacOS/Content/Resources/compiler zum hinzufügen.

25.Juli 2016

PureBasic 5.43 LTS

- Aktualisiert: Die neue Version des 'Zweigs' von PureBasic mit Langzeit-Unterstützung ('long-term support', ohne neue Funktionen etc.).
Alle Fixes der 5.50 sollten auch in dieser Version verfügbar sein.

25.Juli 2016

PureBasic 5.50

- Hinzugefügt: Vehicle Bibliothek zum einfachen Erstellen von 3D-Vehikeln mit Rädern
- Hinzugefügt: PickBody() zum einfachen Manipulieren eines 3D-Körpers mit der Maus
- Hinzugefügt: CreateTube(), CreateTorus(), CreateIcoSphere() und CreateCapsule()
- Hinzugefügt: #PB_Entity_PlaneBody und #PB_Entity_ConeBody Körpertypen
- Hinzugefügt: GenericJoint() zum Erstellen jeder Art von Gelenk/Verbindung
- Hinzugefügt: Begrenzungsrahmen-Größen-Unterstützung bei CreateEntityBody()
- Hinzugefügt: RegisterFontFile() zum einfachen Verwendung von benutzerdefinierten Zeichensätzen
- Hinzugefügt: PathLength(), PathPointX(), PathPointY(), PathPointAngle()
- Hinzugefügt: PathBoundsX(), PathBoundsY(), PathBoundsWidth(), PathBoundsHeight() um den Begrenzungsrahmen eines Pfads zu ermitteln
- Hinzugefügt: PathSegments(), AddPathSegments() zum Ermitteln/Setzen eines Pfads im Stringformat
- Hinzugefügt: DebuggerError(), DebuggerWarning(), CloseDebugOutput()
- Hinzugefügt: ResetStructure() zum Löschen und erneut Initialisierten eines Struktur-Puffers
- Hinzugefügt: UTF8() und Ascii() zum einfachen Erstellen von UTF8 und Ascii String-Puffern (müssen mit FreeMemory() freigegeben werden)
- Hinzugefügt: FormatNumber() um leicht wie Geld formatierte Zahlen zu erhalten
- Hinzugefügt: #PB_MessageRequester_Info, #PB_MessageRequester_Error und #PB_MessageRequester_Warning für MessageRequester()

- Aktualisiert: SQLite Version 3.13.0

- Geändert: ParticleVelocity() um die aktuelle Geschwindigkeit zu unterstützen.

- Entfernt: ASCII-Modus für die interne PureBasic String-Darstellung, PureBasic ist jetzt rein Unicode.

1.März 2016

PureBasic 5.42 LTS

- Entfernt: 'Ereignisprozedur generieren' Option in den Einstellungen/Form
- Repariert: Einige Bugs im Compiler und den Bibliotheken

23thDecember 2015

PureBasic 5.41 LTS

- Added: 'auto' support for ScrollArea InnerWidth/Height in dialog lib

- Updated: latest assemblers version for Windows, Linux and OS X

- Fixed: french doc fully spellchecked by 'GG'
- Fixed: Some compiler and libraries related bugs

16thOctober 2015

PureBasic 5.40 LTS

- Added: new Vector 2D library
- Added: new CGI library with standard and FastCGI support
- Added: Literal string escape support with the '~' operator (ex: a$ = ~"Hello\nWorld\n")
- Added: EscapeString()/UnescapeString() function to allow escaping operation on any strings (variables etc.)
- Added: EnumerationBinary to create bitmask enumeration automatically
- Added: database parameter binding to ease request construction
- Added: SetDatabaseBlob(), SetDatabaseFloat(), SetDatabaseDouble(), SetDatabaseLong()
- Added: SetDatabaseQuad(), SetDatabaseString(), SetDatabaseNull()
- Added: SHA2 and SHA3 (224/256/384/512-bit) support to Cipher library
- Added: StringFingerprint()
- Added: CRC32 support for StartFingerprint()
- Added: ReceiveHTTPMemory(), IsJoint()
- Added: RefreshDialog() to recalc dimension after a text change or similar
- Added: 'group' XML attribute for 'option' dialog gadget, to specify explicitly a group
- Added: HTTPS and simple auth support for ReceiveHTTPFile() and GetHTTPHeaders()
- Added: Auto redirect support for ReceiveHTTPFile() and ReceiveHTTPMemory()
- Added: ASynchronous mode for ReceiveHTTPFile() and ReceiveHTTPMemory()
- Added: HTTPProgress(), AbortHTTP() and FinishHTTP() to control async mode
- Added: HTTPS/TLS support for SendMail()
- Added: FlushPreferenceBuffers()
- Added: CopyDebugOutput() to copy the debug output to the clipboard from code
- Added: 7z archive creation
- Added: tar (gz and bzip2) archive support for creation and decompression
- Added: Full path in IDE recent files menu
- Added: #PB_ProgressBar_Unknown for SetGadgetState() to indicate unknown progress
- Added: #PB_UTF8/Ascii/Unicode support to ReadCharacter() and WriteCharacter()
- Added: #PB_UTF8 support to URLEncoder() and URLDecoder (now the default mode)
- Added: Windows 8.1/10 and OS X 10.9/10/11 support to OSVersion()
- Added: #PB_Editor_xxx constants when using the 'Version' info on Windows
- Added: #PB_Program_Ascii/Unicode/UTF8 support to RunProgram()
- Added: linux/osx style flags for the commandline compiler on Windows to ease cross-platform scripts
- Added: #PB_File_SharedWrite support to ReadFile() and CreateFile()
- Added: 'IMPORTLIST' compiler interface to get all the predefined API functions
- Added: #Null$ special string constant to affect a real null value to a string (to free it completely). It can be used as well for API function which sometimes accept NULL instead of a string address.
- Added: #Empty$ constant
- Added: #PB_ByteLength support to MemoryStringLength()
- Added: #PB_Ascii, #PB_UTF8 and #PB_Unicode support to Create/Open/ReadFile() to set the default write/read mode
- Added: #PB_ByteLength flag for PeekS() and #PB_UTF8 (only)
- Added: CreateCone(), CameraCustomParameter(), ResizeCamera()
- Added: #PB_Entity_DisableContactResponse for SetEntityAttribute()
- Added: #PB_Entity_ConeBody, #PB_Entity_PlaneBody
- Added: FreeEntityBody(), FreeTerrainBody()
- Added: ApplyEntityTorque(), ApplyEntityTorqueImpulse()
- Added: Added 'CollisionGroup' and 'CollisionMask' parameter for RayCollide()
- Added: Migration help page, to have a step by step migration guide between old on new PureBasic.
- Added: User guide in german (thanks to Andre and Vera)

- Updated: the Linux printer lib to use native GtkPrint instead of GnomePrint
- Updated: the Windows compiler to VC++ 2013 for better code generation
- Updated: SQLite to 3.8.10.2

- Fixed: Zip archive support
- Fixed: send mail and http request issues
- Fixed: 'CONSTANTLIST' compiler interface, now string constants are returned as escaped strings.

- Changed: The default GTK version is now GTK3 on Linux. A gtk2 subsystem has been added for backward compatibility.
- Changed: The default string format for RunProgram() read/writestring is not UTF8 instead of Unicode
- Changed: the Cipher lib to be modular (now UseMD5Fingerprint() and such commands needs to be used)
- Changed: ExamineFingerprint() to StartFingerprint()
- Changed: NextFingerprint() to AddFingerprintBuffer()
- Changed: EntityPhysicBody() to CreateEntityBody()
- Changed: TerrainPhysicBody() to CreateTerrainBody()
- Changed: the SendMail() 'Asynchronous' parameter has been replaced by the #PB_Mail_Asynchronous flag.
- Changed: DLLImporter has been removed and .pbl files are no more supported. New 'import library' files can be created using the '/IMPORT' switch of the pbcompiler.

- Removed: SetWindowCallback() support for OS X. Use BindEvent() instead.
- Removed: RemovePackFile()
- Removed: #PB_Packer_CompressedSize support for ZIP and 7z archives with PackerEntrySize()
- Removed: AvailableScreenMemory()

27thOctober 2014

PureBasic 5.24 LTS

- Fixed: The new LTS version which includes the bugs fixes from the brand new 5.31 version.

27thOctober 2014

PureBasic 5.31

- Fixed: Some compiler and libraries related bugs

25thJuly 2014

PureBasic 5.23 LTS

- Fixed: The new LTS version which should include most of the latest fixes (excluding new IDE one, solved by the new Unicode mode). Some other fixes available to 5.30 could be missing, as if we changed too many the internals of a lib, we don't want to push it in the old branches. So no fancy new stuff, just a stabilisation release.

23thJuly 2014

PureBasic 5.30

- Added: 'Issues' IDE tool to collect and display TODO/FIXME markers inside the code
- Added: JSON library
- Added: ParseXML(), ComposeXML(), InsertXMLArray/List/Map/Structure(), ExtractXMLArray/List/Map/Structure() to XML lib
- Added: OpenGLGadget() with native opengl commands and constants support for Windows, OSX and Linux
- Added: ExamineRegularExpression() and related commands to process regex matches step by step (with group support)
- Added: ClipOutput(), UnclipOutput(), SetOrigin(), GetOriginX(), GetOriginY()
- Added: GetWindowData(), SetWindowData()
- Added: AllocateStructure(), FreeStructure()
- Added: #PB_Default support to WindowBounds() to reset min/max size
- Added: 'Format' parameter to Read/WriteProgramString(), WriteProgramStringN() and ReadProgramError()
- Added: /PREPROCESS compiler flag to create a big single source with all macros, compilerif and file include resolved. Can be combined with /COMMENTED to get the original source with comments as well.
- Added: Optional '#Server' parameter to NetworkServerEvent() to check events only on a specific server
- Added: #PB_String_NoZero flag support to PokeS() to avoid writing the ending null character
- Added: #PB_Enumeration support for Defined()
- Added: #PB_Explorer_HiddenFiles to show hidden files in the explorer gadgets
- Added: Optional 'Type' parameter to CreateBillboardGroup()
- Added: BillboardGroupCommonDirection(), BillboardGroupCommonUpVector()
- Added: #PB_Entity_MinVelocity and #PB_Entity_ForceVelocity to SetEntityAttribute()
- Added: SetMaterialAttribute() with #PB_Material_DepthCheck and #PB_Material_DepthWrite constants
- Added: #PB_Material_DepthCheck support for GetMaterialAttribute().
- Added: Engine3DStatus() with these constants: #PB_Engine3D_NbRenderedTriangles, #PB_Engine3D_NbRenderedBatches, #PB_Engine3D_CurrentFPS, #PB_Engine3D_MaximumFPS, #PB_Engine3D_MinimumFPS, #PB_Engine3D_AverageFPS, #PB_Engine3D_ResetFPS
- Added: #PB_Absolute / #PB_Relative support to CameraDirectionX/Y/Z(), CameraX/Y/Z(), EntityX/Y/Z(), LightX/Y/Z(), LightDirectionX/Y/Z(), BillBoardGroupX/Y/Z(), NodeX/Y/Z(), ParticleEmitterX/Y/Z() and FetchOrientation()
- Added: ParticleSpeedFactor(), DisableParticleEmitter()
- Added: GetEntityCollisionMask(), GetEntityCollisionGroup(), SetEntityCollisionFilter()
- Added: WaterHeight(), FreeWater()
- Added: Fully unicode IDE
- Added: Highlighting of repeated occurrences of the currently selected word in the IDE
- Added: Plain-text editing mode to edit non-PB files in the IDE
- Added: Ctrl+E and Ctrl+Shift+E shortcut to align/shift comments in a selected code block
- Added: Ctrl+M and Ctrl+Shift+M shortcut to select the current code block (repeated presses select the next code block)
- Added: PopupMenu to IDE error log for clear/copy operation
- Added: %HOME and %PROJECT to IDE tool commandline options, added PB_TOOL_Project to available env vars
- Added: Automatic code indentation can align comments at the end of code lines in the IDE
- Added: AutoComplete remembers last selection for Structure/Module AutoComplete
- Added: Context sensitivity for current module/procedure for variable display and expression eval in the debugger

- Changed: FormatXML() with #PB_XML_ReFormat no longer adds newlines inside single-line elements for a more readable output
- Changed: DeleteElement() now returns the data pointer to the new current element (if any)
- Changed: SetXMLAttribute() to accept newline characters in attributes (will be encoded as character entities)
- Changed: Added a mandatory 'name' parameter to CreateXMLNode() as some parser needs it at node creation time
- Changed: The way (X)IncludeFile and IncludeBinary works: it's now relative to the file which contains these statements (which is easier to handle)
- Changed: #PB_Event_SizeWindow and #PB_Event_MoveWindow are no more realtime on Windows, use BindEvent() to get real time update. It should fixes ugly flickering when realtime resizing on Windows.
- Changed: DataSection label within Procedure are now local labels.
- Changed: ASM local label prefix has been changed from 'l_' to 'll_' ('ll' for local label), to avoid possible clash with main labels.
- Changed: #PB_LinkedList constant has been renamed to #PB_List for better consistancy
- Changed: Removed the 'Billboard' parameter from AddBillboard() as it was not used. Now returns the new billboard index.
- Changed: Updated Scintilla to version 3.4.2

- Removed: MaterialDepthWrite() (replaced by SetMaterialAttribute())
- Removed: CountRenderedTriangles() and Engine3DFrameRate(), replaced by Engine3DStatus()

17thMarch 2014

PureBasic 5.22 LTS

- Fixed: Some compiler and libraries related bugs

20thNovember 2013

PureBasic 5.21 LTS

- Changed: 'REQUEST' to 'AUTO' for dialog splitter automatic min size calc (old syntax still supported)

- Fixed: Some compiler and libraries related bugs

17thSeptember 2013

PureBasic 5.20 LTS

- Added: Module support for the compiler
- Added: Runtime library
- Added: Dialog library
- Added: GTK3 subsystem for Linux
- Added: DirectX11 subsystem for Windows (doesn't not support the 3D engine for now)
- Added: Named enumeration support to allow continuing a previous enumeration
- Added: JoystickName(), JoystickZ()
- Added: Optional #PB_Relative flag to JoystickX/Y/Z() to have more precise values
- Added: Optional pad number to JoystickX/Y/Z() to handle more complex gamepads
- Added: ZoomSprite() now accepts #PB_Default as Width/Height to reset to initial sprite size
- Added: 'Color' and 'Intensity' parameter to DisplayTransparentSprite()
- Added: ClipSprite() now support #PB_Default for individual parameter
- Added: #PB_Sprite_PixelCollision flag to CreateSprite(), LoadSprite() to enable pixel collision
- Added: Zoom support to SpritePixelCollision() and SpriteCollision()
- Added: OpenGL support for SpriteBlending() (warning, it just wraps OpenGL mode, so it can behave different than DirectX)
- Added: 32-bit support for SpriteOutput() for DX and OpenGL
- Added: #PB_EventType_Focus and #PB_EventType_LostFocus support to EditorGadget()
- Added: #PB_EventType_RightClick support to ListViewGadget()
- Added: #PB_EventType_Change support to PanelGadget() and DateGadget()
- Added: #PB_Prototype and #PB_Module support to Defined()
- Added: All Init() functions can be called more than once without issue (like InitSound(), InitNetwork() etc.)
- Added: #PB_FileSystem_Force support to DeleteFile()
- Added: #PB_FileSystem_NoExtension support to GetFilePart()
- Added: Back color parameter to CreateImage()
- Added: #PB_Entity_NbSubEntities to GetEntityAttribute()
- Added: MeshIndexCount(), SetRenderQueue(), FetchEntityMaterial(), GetMeshData(), SetMeshData()
- Added: CPUName(), Un/BindEvent(), Un/BindGadgetEvent(), Un/BindMenuEvent()
- Added: Previous location is displayed when declaring a structure, interface, prototype or procedure twice.
- Added: 2 license files to easy add the needed information when shipping PB programs (see reference documentation)
- Added: Bool() is now evaluated at compile time if the whole expression is constant
- Added: Debugger check for SortStructuredList() and SortList() to ensure the specified list is of correct type
- Added: Linux executables created on new distribution should still work on old linux.
- Added: #PB_EventType_FirstCustomValue for use with PostEvent()
- Added: CameraFollow(), ExamineWorldCollisions(), NextWorldCollision(), FirstWorldCollisionEntity(), SecondWorldCollisionEntity()
- Added: WorldCollisionContact(), WorldCollisionNormal(), WorldCollisionAppliedImpulse()
- Added: BuildMeshTangents(), MeshVertexTangent(), CopyTexture()
- Added: Pitch(), Roll(), Yaw()
- Added: #PB_Gadget_RequiredSize support for GadgetWidth/Height()
- Added: #PB_Entity_LinearSleeping, #PB_Entity_AngularSleeping, #PB_Entity_DeactivationTime, #PB_Entity_IsActive,
- Added: #PB_Entity_AngularVelocityX/Y/Z, #PB_Entity_ScaleX/Y/Z, #PB_Entity_AngularVelocity, #PB_Entity_HasContactResponse for Get/SetEntityAttribute()

- Optimized: Pixel sprite collision routines are now much faster with DirectX
- Optimized: More peephole optimizations on x64 assembler output
- Optimized: Faster compilation for big programs
- Optimized: Linux build server have been upgraded, now using a better GCC which produce better code.

- Changed: SpinGadget() EventType are now #PB_EventType_Up and #PB_EventType_Down instead of -1 and 1.
- Changed: renamed ZoomSprite3D() to ZoomSprite()
- Changed: renamed TransformSprite3D() to TransformSprite()
- Changed: renamed RotateSprite3D() to RotateSprite()
- Changed: renamed Sprite3DQuality() to SpriteQuality()
- Changed: renamed Sprite3DBlending() to SpriteBlending()
- Changed: renamed the whole 'Module' library to 'Music'
- Changed: renamed Frame3DGadget() to FrameGadget()
- Changed: renamed Frame3DGadget3D() to FrameGadget3D()
- Changed: renamed #PB_Shortcut_Prior to #PB_Shortcut_PageUp and #PB_Shortcut_Next to #PB_Shortcut_PageDown
- Changed: Packer plugin constant renamed to #PB_PackerPlugin_XXX
- Changed: RayCollide() now returns the colliding #Entity.

- Updated: WebGadget() on Windows doesn't needs ATL.dll anymore
- Updated: zlib to 1.2.8
- Updated: pqlib (PostgreSQL) to 9.2.4
- Updated: ziplib to 0.11.1
- Updated: SCNotification scintilla structure

- Removed: Mozilla ActiveX support for WebGadget() on Windows as the last ActiveX version is way too old (2005)
- Removed: Sprite3D library (merged with regular sprite library)
- Removed: Palette library (outdated)
- Removed: UnPackMemory() -> replaced with UnCompressMemory()
- Removed: RenderMovieFrame() and #PB_Movie_Rendered (outdated)
- Removed: DisplayTranslucentSprite() -> replaced with 'Alpha' parameter for DisplayTransparentSprite()
- Removed: DisplaySolidSprite() -> replaced with 'Color' parameter for DisplayTransparentSprite()
- Removed: DisplayRGBFilter() -> can be replaced with a zoomed sprite with color
- Removed: DisplayShadowSprite() -> can be replaced with DisplayTransparentSprite() with color
- Removed: StartSpecialFX(), StopSpecialFX(), DisplayAlphaSprite(), ChangeAlphaIntensity(), UseBuffer()
- Removed: Carbon subsystem on OS X, it was too old be used with new libs

- Fixed: Many bugs

19thMarch 2013

PureBasic 5.11

- Fixed: Some compiler and libraries related bugs


14thFebruary 2013

PureBasic 5.10

- Added: Form designer is now integrated to the IDE !
- Added: Fully reworked Packer library with ZIP, BriefLZ, 7z (unpacker only), LZMA and JCALG1 (Windows x86 and UncompressMemory() only) support. JCALG1 support has been dropped. Archives formats for BriefLZ have been changed.
- Added: IPv6 support to the network library. Updated IPString(), MakeIPAddress(), GetClientIP(), IPAddressField(), ExamineIPAddress() and NextIPAddress(). added #PB_Network_IPv6 flag to OpenConnection and CreateServer(). Added FreeIP() for v6 IP
- Added: System library: ComputerName(), UserName(), MemoryStatus(), CountCPUs()
- Added: Line continuation feature, with the following operands: ',' '|' '+' And Or XOr
- Added: Constant string comparisons are now handled at compile time, allowing use in CompilerIf for example.
- Added: CocoaMessage() for OS X
- Added: 'Check syntax' to only compile the code without build/running an executable (/CHECK switch or in the IDE compiler menu)
- Added: Array/List/Map parameter support to Interface methods
- Added: Support for dynamic array/list/map support in structure/interface in Residents.
- Added: #PB_Character, #PB_Unicode, #PB_Ascii and #PB_Integer flag support to FillMemory()
- Added: #PB_RegularExpression_NoCase support to CreateRegularExpression()
- Added: EncodeImage() with PNG, JPEG and JPEG2000 support
- Added: #PB_Memory_NoClear support to Re/AllocateMemory()
- Added: ImageFormat()
- Added: #PB_Editor_WordWrap to EditorGadget()
- Added: Multicharacter comparison in StringField()
- Added: NbOccurrences parameter for ReplaceString()
- Added: PostEvent(), EventData()
- Added: return value to SetCurrentDirectory()
- Added: #PB_String_NoCase mode parameter to FindString()
- Added: #PB_Preference_NoSpace and #PB_Preference_GroupSeparator flags for OpenPreferences() and CreatePreferences()
- Added: DatabaseColumnIndex()
- Added: #PB_Cipher_URL and #PB_Cipher_NoPadding for Base64Encoder(), added URL compatibility to Base64Decoder()
- Added: SetGadgetItemImage() for all gadget supporting item gadget image
- Added: #PB_Gadget_ScreenCoordinate and #PB_Gadget_WindowCoordinate flag for GadgetX/Y()
- Added: #PB_File_SharedRead (no effect on Linux/OSX), #PB_File_SharedWrite (no effect on Linux/OSX), #PB_File_Append and #PB_File_NoBuffering fgs.
Day.' - Added: Optional title parameter to OpenConsole()
- Added: #PB_ScrollArea_ScrollStep added for ScrollAreaGadget()
- Added: #PB_Ignore for ResizeImage()
- Added: Bind a specific IP to CreateNetworkServer()
- Added: Timeout, LocalIP$ and LocalPort parameter to OpenNetworkConnection()
- Added: #PB_NetworkEvent_Disconnect support for NetworkClientEvent()
- Added: #PB_Unicode, #PB_Ascii and #PB_UTF8 support to SendNetworkString()
- Added: #PB_String_MaximumLength attribute for StringGadget()
- Added: #PB_Event_DeactivateWindow support
- Added: #PB_EventType_Change support for EditorGadget()
- Added: #PB_Relative/#PB_Absolute flag for FileSeek()
- Added: 'Offset' and 'Length' parameters to SHA1/MD5/CRC32FileFingerprint()
- Added: GetSoundPosition(), SetSoundPosition(), SoundLength(), PauseSound(), ResumeSound(), SoundStatus(), GetSoundFrequency()
- Added: #PB_All support for SoundVolume()
- Added: SetGadgetItemState() support for ExplorerListGadget()
- Added: InputRequester add close
- Added: InputRequester() added #PB_InputRequester_Password flag
- Added: Random() added optional minimum value
- Added: SetGadgetItemText() for ListIconGadget(): handling of Chr(10) as in AddGadgetItem()
- Added: made OpenWindowedScreen() stretch parameters optional
- Added: ScreenWidth(), ScreenHeight(), ScreenDepth()
- Added: SMTP AUTH support to mail library
- Added: optional parameters to RemoveMailRecipient(), ability to remove all recipients
- Added: ReadString(#File [, Flags [, Length]]) : length and #PB_File_IgnoreEOL support
- Added: #PB_Window_InnerCoordinate support to WindowX/Y()
- Added: #PB_Window_FrameCoordinate support to WindowWidth()/Height()
- Added: #PB_Image_Raised support to ImageGadget()
- Added: Support for FreeXXX(#PB_All) for all free commands
- Added: Compiler Constants: #PB_Compiler_LineNumbering, #PB_Compiler_InlineAssembly, #PB_Compiler_EnableExplicit
- Added: Compiler Constants: #PB_Compiler_ExecutableFormat (with #PB_Compiler_DLL, #PB_Compiler_Console, #PB_Compiler_Executable)
- Added: Compiler Constant: #PB_Compiler_IsIncludeFile, #PB_Compiler_IsMainFile, #PB_Compiler_Filename (filename without path)
- Added: Bool() compiler operator. Boolean operations are now forbidden without Bool().
- Added: MacroExpandedCount internal keyword
- Added: UndefineMacro
- Added: Now XIncludeFile also take in account the main file, to avoid double inclusion if the main file is included from another file
- Added: TypeOf() for variable, structure and fields
- Added: Defined(Label, #PB_Label) support
- Added: CompilerElseIf
- Added: Local labels
- Added: Define now behave like Global and accept Dim(), NewMap() and NewList() on the same line
- Added: 'Align' keyword support for structure, with a special #PB_Structure_AlignC value to mimic C structures padding
- Added: autocast of numeric values when string are involved, allowing to concatenate string and numeric in constants
- Added: 'CONSTANTLIST' to Compiler interface
- Added: editing history recording in the IDE to recover previous code states and for crash recovery (see File -> Session History)
- Added: AffectedDatabaseRows(), CheckDatabaseNull() to database library
- Added: new Text3D library
- Added: 'Mode' optional parameter to all ...Yaw/Roll/Pitch() functions
- Added: 'Type' and 'Mode' optional parameter to CreateMesh()
- Added: RayCast(), MouseRayCast(), NormalX(), NormalY(), NormalZ()
- Added: UpdateMesh(), EnableManualEntityBoneControl(), MoveEntityBone(), RotateEntityBone(), MeshIndex()
- Added: 'Type' optional parameter to AddSubMesh()
- Added: 'Type' parameter to FinishMesh()
- Added: ScaleNode(), GetMaterialColor(), GetMaterialAttribute(), ConvertLocalToWorldPosition(), ConvertWorldToLocalPosition()
- Added: MaterialCullingMode(), FetchOrientation(), SetOrientation(), GetX(), GetY(), GetZ(), GetW(), GetLightColor()
- Added: AttachEntityObject(): bone name can be empty, so the object is added directly to the entity

- Changed: renamed SoundFrequency() to SetSoundFrequency()
- Changed: renamed AddMeshVertex() to MeshVertexPosition()
- Changed: renamed LightColor() to SetLightColor()
- Changed: removed all MaterialXXXXColor() replaced by SetMaterialColor()
- Changed: removed all XXXXLocate() replaced by #PB_Absolute flag for MoveXXXX() commands
- Changed: removed ResizeEntity(), replaced by #PB_Absolute flag for ScaleEntity() command, done also for ScaleNode() and ScaleText3D()
- Changed: replaced #PB_Sort_ with #PB_ to avoid possible errors
- Changed: disallow native type for pointers
- Changed: StrF/D(), trailing zeros are now automatically removed if no decimals are specified

- Updated: OGRE core has been updated to 1.8.2
- Updated: SQLite updated to 3.7.15.2
- Updated: User-guide: new chapters about dynamic numbering and handling multiple windows added by spikey

- Removed: SendNetworkFile(), ReceiveNetworkFile(), #PB_NetworkEvent_File to avoid possible security hole
- Removed: DirectX7 and NT4 subsystem on Windows
- Removed: SDL subsystem on Linux
- Removed: PowerPC version for OS X

- Optimized: FindString() is up to twice as fast

- Fixed: Many bugs

5thNovember 2012

PureBasic 5.00

- Added: Cocoa support on OS X (now the default toolkit)
- Added: 64-bit version of PureBasic for OS X
- Added: Brand new Form Designer, for Windows, Linux and OS X
- Added: Carbon subsystem for PowerPC and x86 version of PureBasic
- Added: Multi-dimensional arrays in structure support
- Added: InitScintilla() on Linux and OS X avoid compilation issues
- Added: #PB_Window_NoActivate flag to OpenWindow() and HideWindow()
- Added: #PB_EventType_RightClick support ScintillaGadget()
- Added: Favorites section to the explorer tool (IDE)
- Added: Trigger for custom tools when a new source file is created (IDE)
- Added: SetWindowCallback() support to OS X to have callback events
- Added: partial thread-safety to GTK (Linux)
- Added: SpritePixelCollision() support for OS X and Linux

- Updated: Scintilla updated to 3.2.2
- Updated: Expat updated to 2.1.0
- Updated: libjpeg updated to 8.0d
- Updated: libpng updated to 1.5.12
- Updated: Ogre to 1.8.0, bullet to 2.80, hydrax to 0.5.4, CEGUI to 0.7.7
- Updated: ModPlug lib update to 0.8.8.4
- Updated: Use of VC++ 2010 instead of VC++ 2005 to compile the Windows libraries (32-bit and 64-bit), resulting of better optimized code
- Updated: French documentation has been greatly updated/enhanced, thanks to Jean R. VIALE.

- Changed: SetModulePosition() is now in milliseconds, no more in pattern

- Fixed: Many bugs

3D Engine:
- Added: EntityAnimation library
- Added: NodeAnimation library
- Added: VertexAnimation library
- Added: Spline library
- Added: CG Toolkit support for the 3D engine (both DirectX and OpenGL), trough InitEngine3D()
- Added: optional 'Mode' parameter to InitEngine3D()
- Added: 'PickMask' parameter to MousePick() and CreateEntity()
- Added: RenderWorld() now returns 'TimeSinceLastFrame', in milliseconds
- Added: SkyBox() and SkyDome() now supports Fog()
- Added: 'Color' and 'TextureSize' parameters to WorldShadows()
- Added: #PB_World_UnderWater and #PB_World_WaterGodRays flags to CreateWater()
- Added: RayPick(), CameraViewWidth(), CameraViewHeight(), CameraViewX(), CameraViewY(), CameraDirection()
- Added: CameraDirectionX/Y/Z(), SetCameraFixedYawAxis()

- Added: optional 'IsActive' parameter to render to texture for CreateCamera()
- Added: ScaleMaterial(), MaterialFog(), ReloadMaterial(), ResetMaterial(), NodeFixedYawAxis()
- Added: optional 'TextureCoordinateIndex' parameter to AddMaterialLayer()
- Added: #PB_Material_Anisotropic support to MaterialFilteringMode()
- Added: #PB_Default support as #Material to set the default settings for materials.
- Added: #PB_Material_Wireframe, #PB_Material_Point and #PB_Material_Solid to MaterialShadingMode()
- Added: SoundListenerLocate()
- Added: Optional DirectionX/Y/Z parameter to NodeLookAt()
- Added: optional 'Mode' parameter to MoveLight(), MoveEntity() and MoveNode()
- Added: CreateTexture() now handle alpha textures as well
- Added: #PB_Entity_Wireframe, #PB_Entity_Solid, #PB_Entity_Point and #PB_Entity_DisplaySkeleton to EntityRenderMode()
- Added: FreeEntityJoints(), AttachEntityObject(), DetachEntityObject(), EntityBoneX/Y/Z()
- Added: EntityBonePitch(), EntityBoneRoll(), EntityBoneYaw(), EntityFixedYawAxis()
- Added: DirectionX/Y/Z optional parameters to EntityLookAt()
- Added: EntityVelocity(), EntityAngularFactor(), EntityLinearFactor(), EntityCustomParameter(), EntityParentNode()
- Added: EntityBoundingBoxX/Y/Z(), DisableEntityBody()
- Added: #PB_Entity_VelocityX/Y/Z, #PB_Entity_MassCenterX/Y/Z, #PB_Entity_MaxVelocity to Get/SetEntityAttribute()
- Added: LightAttenuation(), LightX/Y/Z(), LightDirection(), LightDirectionX/Y/Z()
- Added: RotateLight(), LightPitch(), LightYaw(), LightRoll()
- Added: GetScriptParticle(), CreateRenderTexture(), UpdateRenderTexture(), SaveRenderTexture()
- Added: CreateCubeMapTexture(), EntityCubeMapTexture()
- Added: HideEffect() now handle ribbon as well
- Added: EffectID(), RibbonEffectWidth(), AttachRibbonEffect(), DetachRibbonEffect(), CreateLensFlareEffect(), LensFlareEffectColor()
- Added: EnableHingeJointAngularMotor()
- Added: Joint parameter for ConeTwistJoint(), HingeJoint(), PointJoint(), SliderJoint()
- Added: #PB_HingeJoint_LowerLimit and #PB_HingeJoint_UpperLimit to Get/SetJointAttribute()
- Added: Optional 'Pitch', 'Yaw', 'Roll' parameters to AddStaticGeometryEntity()
- Added: FreeTerrain(), SetupTerrains(), CreateTerrain(), TerrainPhysicBody(), DefineTerrainTile()
- Added: AddTerrainTexture(), BuildTerrain(), TerrainLocate(), TerrainHeight(), TerrainTileHeightAtPosition()
- Added: TerrainTilePointX/Y(), TerrainTileSize(), GetTerrainTileHeightAtPoint(), SetTerrainTileHeightAtPoint()
- Added: UpdateTerrain(), TerrainTileLayerMapSize(), GetTerrainTileLayerBlend(), SetTerrainTileLayerBlend()
- Added: UpdateTerrainTileLayerBlend(), TerrainMousePick(), SaveTerrain(), TerrainRenderMode()
- Added: special key handling to InputEvent3D()

- Changed: CameraLookAt() doesn't change the direction anymore
- Changed: Attach/DetachNodeObject() removed the 'type' object
- Changed: 'InitialWidth' parameter has been removed for CreateRibbonEffect()

- Removed: AnimateEntity() (replaced with Start/StopEntityAnimation())
- Removed: #PB_Entity_Wireframe, #PB_Entity_Point and #PB_Entity_Solid to EntityRenderMode()
- Removed: CheckEntityCollision(), NextWorldCollision(), FirstWorldCollisionEntity(), SecondWorldCollisionEntity()

21thMay 2012

PureBasic 4.61

- Added: up-to-date VisualC SDK for Windows to create PureLibraries
- Added: resource support for Win9x
- Added: new User-Guide (PureBasic introduction) included in the reference manual

- Updated: FASM version (1.69.35)
- Updated: SQLite version (3.7.9)
- Updated: PCRE version (8.30)

- Changed: OpenGL subsystem is now default on Linux (a new 'sdl' subsystem has appear)

- Fixed: 3D examples for Linux
- Fixed: WinAPI 64-bit residents (by Danilo)
- Fixed: Quite some bugs in compiler and libraries

7thNovember 2011

PureBasic 4.60

- Added: a brand new '3D' example folder
- Added: 'Joint' library
- Added: 'SpecialEffect' library
- Added: 'StaticGeometry' library
- Added: CameraPitch(), CameraRoll(), CameraYaw(), SwitchCamera()
- Added: ApplyEntityForce(), ApplyEntityImpulse(), EntityPitch(), EntityRoll(), EntityYaw()
- Added: GetEntityAttribute(), GetEntityMaterial(), SetEntityAttribute(), SetEntityMaterial()
- Added: LightDiffuseColor(), SpotLightRange(), LightLookAt(), DisableLightShadows()
- Added: MaterialDepthWrite(), MaterialSelfIlluminationColor(), MaterialShininess(), GetScriptMaterial()
- Added: CreateLine3D(), CreateCube(), CreateSphere(), CreateCylinder(), CreatePlane()
- Added: MeshVertexCount(), UpdateMeshBoundingBox(), MeshRadius(), AddMeshVertex()
- Added: MeshVertexNormal(), MeshVertexColor(), AddSubMesh(), BuildMeshShadowVolume()
- Added: MeshVertexTextureCoordinate(), AddMeshFace(), FinishMesh(), NormalizeMesh()
- Added: SaveMesh(), SetMeshMaterial(), SubMeshCount(), TransformMesh()
- Added: NodePitch(), NodeRoll(), NodeYaw(), GetScriptTexture(), TextureOutput()
- Added: EntityCollide(), RayCollide
- Added: OpenGL renderer to the 3D library on Windows, when using the OpenGL subsystem
- Added: CanvasGadget(), CanvasOutput()
- Added: SetGadgetItemData() for PanelGadget
- Added: MoveElement(), MergeLists(), SplitList()
- Added: RandomizeList(), RandomizeArray(), DoubleClickTime()
- Added: PushListPosition(), PopListPosition(), PushMapPosition(), PopMapPosition()
- Added: ImageID parameter to OpenSubMenu()
- Added: #PB_ListIcon_ThreeState and #PB_ListIcon_Inbetween
- Added: #PB_Tree_ThreeState and #PB_Tree_Inbetween
- Added: crossplatform ComboBox events
- Added: 'DeclareC' keyword for completeness

- Changed: FindString() 'StartPosition' parameter to be optional
- Changed: WebGadget to use WebKitGtk on Linux
- Changed: ContainerGadget with #PB_Container_Borderless to no longer add a 2px invisible border on Linux
- Changed: EntityPhysicBody(), CreateLight(), RenderWorld(), ShowGUI(), WorldShadows()
- Changed: EntityMaterial() to SetEntityMaterial()

- Removed: Get/SetEntityMass(), Get/SetEntityFriction()
- Removed: SetMeshData()

- Fixed: Many bugs

IDE
- Added: IDE options for command-line project building
- Added: monitoring of files for changes on disk while they are open in the IDE
- Added: FilePanel custom implementation with Drag & Drop, Dropdown menu, scrolling also on OSX
- Added: Diff tool for directories/files
- Added: Html help viewer for Linux/OSX
- Added: Help viewer in toolspanel
- Added: new Color Picker tool
- Added: enabled font selection in IDE for OSX
- Added: ProjectPanel now remembers node expanded states

Debugger
- Added: maximize button to all debugger windows
- Added: all IsXxx() and XxxID() functions to the expression parser (for data breakpoints)

8thSeptember 2010

PureBasic 4.51

- Fixed: Quite some compiler and libraries related bugs


7thJune 2010

PureBasic 4.50

- Added: Support for Array, List, Map inside structures
- Added: CopyList(), CopyMap(), CopyArray()
- Added: FreeList(), FreeMap(), FreeArray()
- Added: CopyStructure(), InitializeStructure()
- Added: Volume support to PlaySound()
- Added: Depth parameter to SaveImage()
- Added: ImageDepth() flag to get the original or current image depth
- Added: #PB_Image_Transparent flag for CreateImage()
- Added: 32-bit support to TGA image decoder
- Added: RoundBox(), AbortFTPFile(), RandomData()
- Added: #PB_2DDrawing_AllChannels mode for DrawingMode()
- Added: Image support for ComboBoxGadget()
- Added: Graphical console functions to Linux
- Added: Large file support to File library on Linux/OSX
- Added: CryptRandom(), CryptRandomData(), OpenCryptRandom(), CloseCryptRandom()
- Added: Many math functions: Exp(), ATan2(), Radian(), Degree(), [A]CosH(), [A]SinH(), [A]TanH(), IsNaN(), IsInfinity(), NaN(), Infinity(), Sign()
- Added: 'Debugger' Library to control some debugger actions from code

- Changed: The Image library now keeps images internally in 24-bit or 32-bit (loading and saving works with other bit depths)

- Fixed: Quite some bugs in libraries and in the compiler

IDE/Debugger:
- Added: Keyword underline for Break, Continue, ProcedureReturn
- Added: StatusBar help for prototypes and interfaces
- Added: Keyword sensitive indentation (block mode is still available)
- Added: 'Format indentation' option in the edit menu
- Added: Indentation guides and whitespace options
- Added: The ability to select multiple compilers in the compiler options
- Added: Purifier tool for the debugger
- Added: Full debugger compatibility between all OS and processors
- Added: Network debugging for the standalone debugger
- Added: Data breakpoints for the debugger
- Added: Support for structured items in the 'View Array/List/Map' tab of the Variable Viewer

- Changed: The Array, List or Map name in the Variable viewer should be entered with a '()' now to display their elements.

1stFebruary 2010

PureBasic 4.41

- Fixed: Quite some compiler and libraries related bugs


1stDecember 2009

PureBasic 4.40

- Added: Native Linux x64 support
- Added: Built-in Map library for hash tables
- Added: 'Threaded' Keyword for thread-local variables
- Added: Structure assignment copies the structure (a.point = b.point)
- Added: ClearStructure()
- Added: AESEncoder(), AESDecoder(), StartAESCipher(), AddCipherBuffer(), FinishCipher()
- Added: Dylib support for OS X
- Added: Joystick library for OS X
- Added: Systray library for OS X
- Added: Trim/LTrim/RTrim() got an optional character to trim
- Added: #PB_Function, #PB_OSFunction, #PB_Map to Defined()
- Added: ReverseString(), InsertString(), RemoveString()
- Added: Blob support to databases
- Added: UsePostgreSQLDatabase(): native PostgreSQL support
- Added: Peephole optimizer to 64-bit versions to produce better code
- Added: '.a' (ascii) and '.u' (unicode) native type to provide native unsigned byte and word.
- Added: FileBuffersSize() - #PB_Default support change the buffersize to the next opened files
- Added: #PB_URL_Protocol to Get/SetURLPart()
- Added: #PB_Shadow_TextureAdditive
- Added: FTPDirectoryEntryRaw(), FillMemory()
- Added: Global, Protected, Threaded, Shared and Static now accept a type to affect all default variable declaration.
- Added: AddWindowTimer(), RemoveWindowTimer(), EventTimer()
- Added: #PB_Window_Tool to create tool windows
- Added: ShortcutGadget(), StatusBarProgress()
- Added: StatusBarImage() now supports normal images (not just icons)
- Added: #PB_Checkbox_ThreeState flag to create a 3 state checkbox
- Added: CreateImageMenu(), CreatePopupImageMenu() for OSX
- Added: Full alphachannel support for all GUI elements that display images
- Added: Full alphachannel support for Image lib
- Added: New drawing modes for 2DDrawing in ImageOutput()
- Added: LinearGradient(), BoxedGradient(), CircularGradient(), EllipticalGradient(), ConicalGradient()
- Added: CustomGradient(), GradientColor(), ResetGradientColors(), CustomFilterCallback()
- Added: DrawAlphaImage() for all outputs on all OS
- Added: DrawAlphaImage() has a new transparency parameter and can be used to draw non-alpha images part transparent
- Added: QuickDraw subsystem for WindowOutput() on OSX
- Added: Sprite/ScreenOutput for OpenGL (all OS)
- Added: DrawingFont() works for SDL output
- Added: OutputWidth(), OutputHeight(), OutputDepth() for 2DDrawing
- Added: GrabDrawingImage(), DrawRotatedText(), RGBA(), Alpha(), AlphaBlend()
- Added: #PB_PixelFormat_ReversedY - for pixel buffers that are stored upside-down (Windows ImageOutput or OpenGL)
- Added: #PB_OS_Windows_7, #PB_OS_MacOSX_10_6 for OSVersion()

- Updated: OGRE to 1.6.2, sqlite 3.6.14.2, PCRE to 7.9

- Changed: Call(C)Function(Fast) parameters have been changed from 'Any' to 'Integer'.
- Changed: OpenScreen() now accepts FlipMode and RefreshRate
- Changed: FlipBuffers() doesn't take an optional parameter anymore

- Removed: #PB_Image_DisplayFormat is now deprecated (value set to 24 to have 24-bit as default)
- Removed: SetRefreshRate() has been removed, the parameter is in OpenScreen() now

- Fixed: Image Decoders are now thread-safe
- Fixed: Quite some bugs in libraries and in the compiler

PureBasic IDE:
- Added: Full project management
- Added: Highlight matching keyword for keyword under cursor (tied to BraceMatching color setting)
- Added: Edit->Goto matching keyword
- Added: PB_TOOL_Preferences Environment variable for IDE tools
- Added: Theme management to customize menu icons
- Added: New 'Silk' theme based on the Iconsset by Mark James
- Added: Autocomplete scans implicit variable declaration and respects scope
- Added: Structure item autocomplete

- Changed: moved encoding/newline setting from compiler options to file menu

PureBasic Debugger:
- Optimized: greatly improved VariableViewer update speeds
- Added: progressbar display if VariableViewer update takes long
- Added: column sort capability to VariableViewer (Windows only)

3rdJune 2009

PureBasic 4.31

- Fixed: Many compiler and libraries related bugs


16thDecember 2008

PureBasic 4.30

- Added: Full 64-bit version of PureBasic (Windows)
- Added: MacOS X x86 support
- Added: 'JPEG 2000' library
- Added: 'Node' library
- Added: 'Gadget3D' library
- Added: 'Window3D' library
- Added: 'Sound3D' library
- Added: Full unicode support to the engine3d
- Added: MacOS X support for engine3d
- Added: Absolute/relative rotation for all engine3d rotate commands
- Added: Absolute move for engine3d physic body
- Added: EntityID(), EntityLookAt()
- Added: CameraProjectionX(), CameraProjectionY(), WorldDebug(), Sun()
- Added: MousePick(), PointPick(), PickX/Y/Z(), CreateWater(), AntialiasingMode()
- Added: CatchModule(), ArraySize(), WindowBounds(), DesktopX(), DesktopY()
- Added: FinishDatabaseQuery(), DatabaseID()
- Added: CreateSemaphore(), FreeSemaphore(), SignalSemaphore(), WaitSemaphore(), TrySemaphore()
- Added: '.i' native type for 32/64-bit integer size
- Added: Read/WriteInteger(), Read/WritePreferenceInteger(), PeekI(), PokeI()
- Added: Language support for compiler and debugger
- Added: Style parameter to FontRequester()
- Added: Support for 'And/Or' in CompilerIf statements
- Added: #PB_Event_MinimizeWindow, #PB_Event_MaximizeWindow, #PB_Event_RestoreWindow
- Added: #PB_Ignore support to AddStatusBarField()
- Added: #PB_Explorer_DisplayMode to ExplorerListGadget()
- Added: Multiple joystick support
- Added: #PB_Compiler_FilePath compiler constant

- Enhanced: Major rework of OnError library (crossplatform)
- Enhanced: InitScintilla(), parameter is now optional
- Enhanced: Complete debugger rewrite for support of the new platforms

- Optimized: XML library to handle very big files quickly
- Optimized: LinkedList library to use memory efficiently

- Changed: 'Read' keyword now requires a type (Read.l, Read.q etc.) to avoid 64-bit migration problems
- Changed: CountList() to ListSize()
- Changed: ClearGadgetItemList() to ClearGadgetItems()
- Changed: CameraProjection() to CameraProjectionMode()
- Changed: AddElement() and such now return a pointer to the start of data
- Changed: ComboBoxGadget() height is now the real gadget height
- Changed: #Long, #Byte, #Word etc. to #PB_Long, #PB_Byte, #PB_Word etc. for consistency
- Changed: RotateEntity(), RotateCamera() and RotateBillboard() x,y rotation axis
- Changed: CameraFOV() angle from radian to degree
- Changed: Array and list parameter now requires the 'List' or 'Array' keyword

- Removed: StrQ(), HexQ(), BinQ(), ValQ()
- Removed: ChangeListIconGadgetDisplay(), replaced by a gadget attribute
- Removed: ButtonImageGadget() backward compatibility
- Removed: CreateGadgetList(), now automatically done in OpenWindow()
- Removed: CopyTexture(), TextureOutput()
- Removed: Removed CPU monitor from the IDE, as all OS provide the same functionality

- Fixed: DX9 subsystem on Windows
- Fixed: Many compiler and libraries related bugs

23rdMay 2008

PureBasic 4.20

- 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

4thNovember 2007

PureBasic 4.10

- Added: XML library
- Added: Drag & Drop library
- Added: Vista compatibility (fully compatible 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 features 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

18thDecember 200

PureBasic 4.02

- Fixed: Macros issues
- Fixed: LoadImage() with plug-ins 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

1stNovember 2006

PureBasic 4.01

- 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

8thMay 2006

PureBasic 4.00

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.

- 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
- 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 linked-list of pointer
- Added: Support for Global, Protected, Static and Shared arrays and linked-list: '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-dimensioned 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, p-variant, p-utf8 and p-bstr
- 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 F)
Day.' - 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

- 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

- Optimized: Smaller executable footprint: 1.5 kb instead of 2.5 kb for the smallest one
- Optimized: Faster float and literal numeric mixing
- Optimized: File library completely rewritten and now handle a read/write cache for very fast performances. Also support for 64-bit files.
- Optimized: Procedures are now as small as possible, which should give some speed increase

- Changed: Console library commands can now fully redirected (ie: possible to use them for 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, because it could cause slowdown 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 arisen since the last version

16thAugust 2005

PureBasic 3.94

- 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

28thFebruary 2005

PureBasic 3.93

- 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 algorithm
- Added: Event when a splitter is moved or resized so the children can be agenced
- Added: Real-time 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: Split Misc library
- Optimized: Faster Base64Encoder() function
- Optimized: Better code generation for string assignment and concatenation

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

- Fixed: A bug in ImageGadget() with XP skin activated and 32-bit 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 Plug-in 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 toggle 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() stolen the current focus
- Fixed: Base64Encoder() produced wrong output sometimes
- Fixed: Refresh problem with FrameGadget() and #PB_Frame_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-bit screen and 'texture' sprites
- Fixed: Some small bugs in the IDE
- Fixed: Several compiler bugs (string concatenation, interfaces in procedures)

25thOctober 2004

PureBasic 3.92

- Added: CalendarGadget() and DateGadget(), thanks to Fr34k !
- Added: LibraryID(), SwapElements()
- Added: SaveSprite() now have an optional 'Flags' parameter and can now save 8-bit sprite/screen
- Added: Double-click on Windows background now generate an event (Thanks to Rings)

- Optimized: ListCount() and ListIndex() are now very fast (it doesn't iterate each element of the list 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 behavior.
- 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 which contained 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: Literal string concatenation were wrong in some cases
- Fixed: The compiler didn't returned a non zero exit code if an error occurred
- Fixed: Several compiler bugs

4thJuly 2004

PureBasic 3.91

- Added: Desktop library
- Added: IsDatabase(), IsFile(), IsFont(), IsDirectory(), IsGadget(), IsImage(), IsLibrary(), IsMenu(), IsModule(),
IsMovie(), IsPalette(), IsSprite(), IsSprite3D(), IsStatusBar(), IsSysTrayIcon(), IsToolBar(), IsWindow()
- Added: Manifest file (for XP skins) is now included in the exe
- 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 behavior).
- Changed: the LCC resource compiler and linker to PellesC one

- 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.

12thApril 2004

PureBasic 3.90

- 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 real-time 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.

- Optimized: split 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

9thDecember 2003

PureBasic 3.81

- 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 quickly 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 plug-in is now '7'
- Changed: InitModule() and InitPalette() doesn't need the maximum parameter anymore
- Changed: PlayMovie() behavior 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

6thOctober 2003

PureBasi 3.80

- 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 optional 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 DisplayTranslucentSprite()
- 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

13thJuly 2003

PureBasic 3.72

- Changed: SelectedFilePattern() and Open/SaveFileRequester 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 split 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

7thJune 2003

PureBasic 3.70

- 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

- Optimized: and split 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 specified it rounds correctly
- Fixed: Several debugger warning was missing
- Fixed: Floats and integers were badly mixed in some case

25thMarch 2003

PureBasic 3.62

- 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

19thMarch 2003

PureBasic 3.61

- Fixed: Major compiler array bugs
- Fixed: Major MD5FileFingerprint() bug
- Fixed: Syntax Highlighting for command/procedure and Alt+V shortcut
- Fixed: 2 bugs in the Visual Designer
- Fixed: Sprite loading and image plug-in (JPEG, PNG) in 16-bit mode
- Fixed: XOR inline ASM keyword was no more recognized
- Fixed: TGA decoder on some file

17thMarch 2003

PureBasic 3.60

- 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 plug-in
- Added: Native JPEG and PNG image/sprite encoder trough plug-in
- Added: Native OGG sound decoder trough plug-in
- 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

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

- Removed: CatchJPEGSPrite() and LoadJPEGSprite() (replaced by plug-ins)

- Enhanced the PureBasic library format (new compressed format)
- Enhanced Inline ASM now accept FPU opcode
- Enhanced the editor: Double-click 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 16-bit sprite display problem with some old gfx cards which use 15-bit internally
- Fixed: some bugs in the compiler

13thJanuary 2003

PureBasic 3.51

- 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)

6thJanuary 2003

PureBasic 3.50 - Happy New Year !

- Added: Engine3D Library: Add3DArchive(), AmbientColor(), Fog(), InitEngine3D(), LoadWord(), RenderWorld(), SkyBox(), SkyDome()
- Added: Camera Library: CameraLocate(), CameraX(), CameraY(), CameraZ(), CreateCamera(), FreeCamera(), MoveCamera(), RotateCamera()
- Added: Light Library: CopyLight(), CreateLight(), FreeLight(), HideLight(), LightColor(), LightLocate(), LightSpecularColor(), MoveLight()
- Added: Mesh Library: CopyMesh(), FreeMesh(), GetMeshAnimationTime(), MeshAnimation(), MeshAnimationLength(), MeshLocate(), MeshTexture(), MeshX(), MeshY(), MeshZ(), MoveMesh(), ResizeMesh(), RotateMesh(), ScaleMesh(), SetMeshAnimationTime()
- Added: Texture Library: CopyTexture(), CreateTexture(), FreeTexture(), LoadTexture(), TextureHeight(), TextureID(), TextureOutput(), TextureWidth()
- Added: WriteFloat(), ReadFloat(), MouseLocate(), MD5FileFingerprint()
- Added: STDCALL and ANY flags to PureLibraries. See SDK doc for more information
- Added: TreeGadget checkboxes support for GetGadgetItemState()
- Added: SetGadgetState() now work for ButtonImageGadget()

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

- Optimized: CallFunctionFast() (2x faster)
- Optimized: the code generation: Chr(#Constant) is now considered as a literal string and some speed enhancements

- Changed: The assembler (FASM), resulting of better optimized code (PB editor is 6 kb smaller for example)
- 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

9thOctober 2002

PureBasic 3.40

- Changed: Structure names aren't case sensitive anymore (could produce difficult bug to look at)

- Added: Date library: Date(), Year(), Month(), Day(), DayOfWeek(), DayOfYear(), Hour(), Minute(), Second(), FormatDate(), AddDate(), ParseDate()
- 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 built-in constants

- Optimized: Split libs: FileSystem, StringExtension, Date

- Updated: RunProgram() now has an optional WorkingDirectory$ parameter
- Updated: SetGadgetFont(#PB_Font_Default) now go back to default font
- Updated: OpenWindow() now accepts 2 news flags: #PB_Window_WindowCentered and #PB_Window_ScreenCentered
- Updated: GetGadgetItemText() and SetGadgetItemText() now works for TreeGadget()
- Updated: ReplaceString now have a new 'StartFrom' optional parameter
- Updated: SetGadgetState() can be used with ImageGadget() to change the current image
- Updated: Added 'Level' flag for PackMemory(), AddPackFile() and AddPackMemory() for faster compression
- Updated: when building a DLL, AttachProcess(), DetachProcess(), AttachThread() and DetachThread() 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' werecompileDay.' - 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 more...) and source code released. Thanks to Danilo !

16thAugust 2002

PureBasic 3.30

- This is a bug fixes and synchronization with Linux version release

- Added: HideMenu(), CreateSprite(), UseBuffer()
- Added: French help (fully translated)

- Updated: SortArray() now works with float arrays
- Updated: LoadSprite(), GrabSprite(), CopySprite(), CatchSprite(), LoadJPEGSprite(), CatchJPEGSprite() have now an optional 'Mode' parameter
- Updated: GetFilePart(), GetPathPart() and GetExtensionPart() now remove the surrounding quote if any.
- Updated: SetGadgetItemState() and GetGadgetItemState() can now set/get the checkboxes state of a ListIconGadget() item

- Fixed: SetClipboardText(): failed in some cases
- Fixed: SpritePixelCollision(): failed if sprites were of different sizes
- Fixed: LoadJPEGSprite was ignoring the 'Mode' parameter (not good for 3D sprites)
- Fixed: Bug in AddGadgetItem() with ListIconGadget()
- Fixed: PokeF() was missing
- Fixed: MovieAudio(): wrong volume ramp (now based on decibels..)
- Fixed: ReleaseMouse() wasn't recognized
- Fixed: 2DDrawing bug (again...)
- Fixed: LoadSprite() failed with 16-bit and 32-bit BMP.
- Fixed: GetGadgetText() when used with an editable ComboBoxGadget()
- Fixed: ReadByte() and ReadWord() (with long/word variables)
- Fixed: FreeMenu(), GadgetX(), GadgetY()
- Fixed: DisplaySolidSprite() was missing
- Fixed: Debug routine missing for GadgetID()
- Fixed: Bug when several Movies were used (crash at program end)
- Fixed: ResizeImage()
- Fixed: PreferenceGroup()
- Fixed: ExamineMouse() returned always 0
- Fixed: PathRequester crashed with uninitialized DefaultPath
- Fixed: InitSprite3D() crashed when alone
- Fixed: Editor: ZoomSprite3D() didn't highlight

9thJune 2002

PureBasic 3.20

WARNING! The window callback behavior have changed and will cause program lock if you used one ! See SetWindowCallback() doc for more info.

- Added: Cipher library: CRC32Fingerprint(), MD5Fingerprint(), DESFingerprint(), Base64Encoder()
- Added: AddKeyboardShortcut(), RemoveKeyboardShortcut(), SpinGadget(), WebGadget()
- Added: GetMenuItemState(), SetMenuItemState(), MenuHeight()
- Added: KeyboardReleased(), Trim(), Space()
- Added: SelectElement(), LineXY(), GetExtensionPart()
- Added: ! (XOR) and ~ (NOT) bitwise operands
- Added: Protected BASIC keyword
- Added: Shift+Tab keyboard shortcut to cycle gadget back
- Added: Debugger now detects when using a NULL pointer and a division by 0.

- Optimized: 2DDrawing, Keyboard, Mouse, Sound and Sprite libraries (Command split) !
- Optimized: Plot() command when used with ScreenOutput() is 40 times faster (DirectX)

- Updated: PokeS() and PeekS() now have an optional Length parameter
- Updated: KeyboardPushed() can now have #PB_Key_All as parameter for any pushed keys
- Updated: FileSize() now returns -2 if the file is a directory
- Updated: WindowID() can have an optional #Window parameter
- Updated: All gadgets commands (added a 'Flags' optional parameter) which allows a full control over their look ! (See the each Gadget doc for more information)
- Updated: Plot(), Line(), Box(), Circle(), Ellipse() have now an optional color parameter.
- Updated: Debugger has some bug fixed. When a program stop, or the debugger quit all is cleaned correctly. - This allows fullscreen game debugging easier as the screen close down before displaying the error.
- Updated: Sprite library debug routines.

- Changed: Renamed StripLead() and StripTrail() to RTrim() and LTrim() for other BASIC compatibility
- Changed: NetworkClientEvent(), CloseNetworkConnection()
- Changed: CreateToolBar(): added 'WindowID' parameter
- Changed: CreateMenu(): added 'WindowID' parameter
- Changed: NetworkClientEvent() and NetworkServerEvent(): no more 'String' event: could be a possible exploit.
- Changed: OpenWindowedScreen() x,y parameters take in count the window top and left border width.
- Changed: ResizeWindow(), WindowWidth() and WindowHeight() now use inner area width/height to work with new OpenWindow() and skin support

- Removed: AttachToolBar(), DetachToolBar(), AttachMenu(), ReceiveNetworkString()

- Fixed: FrameGadget() with other sunken and raised frames
- Fixed: ListViewGadget() events
- Fixed: FileSize()
- Fixed: StopDrawing(), display under win9x got corrupt after lot of calls
- Fixed: Debugger problems.
- Fixed: AddGadgetItem() with ListIconGadget() (-1 position wasn't working)
- Fixed: SpritePixelCollision() with clipped sprites
- Fixed: Possible bug in Random()
- Fixed: SpritePixelCollision(), only (0,0,0) transparent color worked
- Fixed: InitSprite(), InitSound(), InitPalette(), InitKeyboard() don't display system request anymore if DirectX 7+ isn't found.
- Fixed: RemoveGadgetItem() and ClearGadgetItemList when used with PanelGadget()
- Fixed: PathRequester() default path on Win9x systems
- Fixed: @LinkedList() with '.s' type now return correct list element pointer (instead of string pointer)
- Fixed: ReadPreferenceString() was faulty in some cases
- Fixed: Documentation: SaveImage(), ScreenID(), SelectedFontStyle() and SelectedFontColor() were missing

6thMay 2002

PureBasic 3.10

- Added: Preference library: OpenPreferences(), CreatePreferences(), ReadPreferenceLong/Float/String(), WritePreferenceLong/Float/String() PreferenceComment(), PreferenceGroup()
- Added: Windows XP skinning support (See 'Compiler Options' window)
- Added: GadgetX(), GadgetY(), GadgetWidth(), GadgetHeight(), GetGadgetItemState(), SetGadgetItemState(), GetGadgetItemText(), SetGadgetItemText(), CountGadgetItems(), TrackBarGadget(), IPAddressGadget()
- Added: HideWindow(), RandomSeed(), MakeIPAddress(), IPAddressField()
- Added: MouseWheel(), CatchSprite(), SaveSprite()
- Added: RotateSprite3D(), ZoomSprite3D(), TransformSprite3D(), Sprite3DQuality(), Sprite3DBlendingMode()
- Added: EventType(): Return/Change/Focus can be detected in StringGadget(), ComboBox() and more
- Added: CatchImage(), CreatePack(), ClosePack(), NextPackFile(), AddPackFile(), AddPackMemory(), PackFileSize(), OpenPack()
- Added: DirectoryEntrySize(), DirectoryEntryAttributes()
- Added: Full compatibility with 'WindowBlinds' on WinXP which seems to broke the event handler !

- Optimized: PureLibraries (Only used commands included) : Image, Misc2, GadgetExtension, Requester, Sprite3D, Memory, Packer

- Updated: CompareMemoryString(): Added an optional 'Length' parameter.
- Updated: DisplayPopupMenu(): (x,y) are now optional
- Updated: ResizeGadget(): passing '-1' to one of the arguments make it ignored (very useful for resizable GUI)
- Updated: GetGadgetText() and TextGadgetText() now works with TreeGadget() and ListIconGadget()
- Updated: AddGadgetItem() now have an optional Image parameter.
- Updated: OpenWindow(): now add the border size automatically, to fix skinning problem under XP
- Updated: FileSize() now returns size for every files, even locked one

- Removed: InitGadget(): no more needed.
- Removed: DoubleClick() and EventMouseButtons(): Use EventType() instead
- Removed: OpenDefaultConsole(). Now OpenConsole() detects automatically if the program is in 'Console' or 'Windows' format.
- Removed: AddListIconGadgetItem() and AddTreeGadgetItem(): AddGadgetItem() is now used
- Removed: ExpandTreeGadgetItem() and TreeGadgetItemState(): Set/GetGadgetItemState() is now used

- Fixed: Gadget events for ComboBox, ListIcon and Systray.
- Fixed: Possible memory leaks with strings in particular cases
- Fixed: Possible bug when using Procedures as callbacks
- Fixed: Create3DSprite(): size was 1 pixel less
- Fixed: Each window has now its own private class
- Fixed: PlaySound(): debugger routine missing and little glitch at the end of playback
- Fixed: ResizeGadget() with PanelGadget and some refresh problems
- Fixed: FindString() on Win9x
- Fixed: ExamineDirectory() bug on Win9x
- Fixed: Module library, playback should work everywhere now
- Fixed: SetGadgetText() for ListViewGadget()
- Fixed: SelectedFontColor()
- Fixed: Silly bug in DeleteElement()
- Fixed: NewList xxxx() alone produced a linker error
- Fixed: Bug when printing images
- Fixed: Random() command (again !)
- Fixed: ResizeImage() under Win9x
- Fixed: IncludeBinary bug (only absolute path worked)
- Fixed: Editor: Tab was badly handled. Little bug when pressing return. Minor coloring bug when pasting

4thApril 2002

PureBasic 3.00

- Added: Library PureLibrary: OpenLibrary(), IsFunction(), CallFunction(), CloseLibrary()
- Added: Help PureLibrary: OpenHelp(), CloseHelp()
- Added: Clipboard PureLibrary: ClearClipboard(), GetClipboardText(), GetClipboardData(), SetClipboardData(), SetClipboardText()
- Added: ElseIf
- Added: If a condition (If/While...) isn't finished before EndProcedure, the compiler display an error.
- Added: ToolBarToolTip()
- Added: SpritePixelCollision()
- Added: Timer PureLibrary (Thanks to Danilo): StartTimer(), EndTimer(), GetMinTimerResolution(), GetMaxTimerResolution()
- Added: ComDX PureLibrary (Thanks to Danilo): CallCOM(), CallDX()
- Added: Printer PureLibrary: NewPrinterPage(), PrinterOutput(), PrintRequester(), StartPrinting(), StopPrinting(), PrinterPageWidth(), PrinterPageHeight()
- Added: Variable command argument for any function
- Added: Declare and DeclareDLL to declare procedures before actual declaration
- Added: CopyMemoryString(), MemoryStringLength(), CompareMemory(), ReAllocateMemory(), CompareMemoryString()
- Added: CopyImage(), ResizeImage(), GrabImage()
- Added: MovieStatus(), MovieLength()
- Added: SoundVolume(), SoundPan(), SoundFrequency(), CatchSound()
- Added: FirstDatabaseRow(), PreviousDatabaseRow()
- Added: CreatePalette(), GetPaletteColor(), SetPaletteColor(), UsePalette()
- Added: RGB(), ReplaceString(), StrU(), StrF(), ValF()
- Added: HideGadget(), GadgetID()
- Added: Dutch catalog for the editor

- Updated: Brand new library architecture to allow to link ONLY needed commands to the final executable. For now, all the libraries aren't optimized to use it, but it will come, in a near future :). BTW, all libraries use the standard STDCALL format, so no argument reversed anymore. Old libraries are still fully compatible.
- Updated: StopSound(): Passing '-1' will stop playing all sounds.
- Updated: PlaySound(): Flags parameter is now optional
- Updated: Sort(): now a range can be specified (ex: from elements 20 to 50 of the array)
- Updated: Resident file: #VK_xx constants added, some structures fixed.

- Changed: Internally, procedures parameters are now pushed in the right order. Warning, all the callback must be changed to reflect this. This also mean than DLL procedure parameters can be put in the right order.
- Changed: InitSound() doesn't require a maximum sound param anymore
- Changed: Renamed BackColour(), FrontColour() and TransparentSpriteColour() to BackColor(), FrontColor() and TransparentSpriteColor()

- Fixed: Compiler crash when using constant string, more check to the preprocessor
- Fixed: StartDrawing() bugs
- Fixed: Random(), to have more randomized numbers.
- Fixed: GetDatabaseString() when getting null values
- Fixed: ExamineDirectory(): Failure on Win9x systems on special cases
- Fixed: Resident problem. Now users residents are loaded.
- Fixed: Editor bug, which prevents to type special characters (characters over 128 in the ASCII table) and some minors other
- Fixed: A FPU bug which prevented OpenGL to work correctly
- Fixed: 'Debug' command: now accept float and string functions without problem.

- Removed: Mr Skunk PureLibraries, as some was bugged but we don't have the source code to fix them.

24thFebruary 2002

PureBasic 2.95

Note: This is a bug fix release before the major 3.0 version. Very few changes.

- Added: HtmlHelp support for search in the help + other goodies. Old HTML files can be safely removed.

- Fixed: Compiler bugs (Float within structure array, XIncludeFile, 'a' constants in some rare case, Expression bug, constant duplication and Image library integration when using Sprite, Memory leaks in string procedures)
- Fixed: LoadJPGSprite bug
- Fixed: Editor colorize problem with normal text color

27thJanuary 2002

PureBasic 2.90

- Added: DLL Creation !
- Added: Constants can now be String or Float
- Added: Debug et DebugLevel commands with Debug window in the debugger.
- Added: Italian editor language by Yuri.

- Changed: Variables, Arrays, LinkedList and Constants are now case insensitive.

- Fixed: PathRequester(), OpenFileRequester(), SaveFileRequester()
- Fixed: ExamineDirectory() tiny bug
- Fixed: GetDatabaseFloat()
- Fixed: Compiler crashing bug on NT4 Sp6a

13thJanuary 2002

PureBasic 2.82

- Added: PeekF(), PokeF()
- Added: Math library: ACos(), ASin(), ATan(), Pow(), Log(), Log10(), Round(), Cos(), Sin(), Tan(), Abs(), Sqr(), Int()
- Added: SpriteOutput(): Allow to use the 2DDrawing command on any sprites !
- Added: #PB_WindowInvisible

- Fixed: compiler bugs (a.l = Pow(), a = -16/variable)
- Fixed: a bug in OpenDatabaseRequester() which prevents database opening with some ODBC drivers (MySQL...)
- Fixed: FrontColour() bug which caused DX and whole system crashes.
- Fixed: SaveImage(). Always save in 24-bit instead of 32-bit
- Fixed: ListViewGadget() now use the exact height gadget, not a rounded one
- Fixed: SysTrayIconToolTip() no more crash if specified text is over 64 characters
- Fixed: ListIconGadget(): Don't destroy the icons after FreeGadget()
- Fixed: ChangeListIconGadgetDisplay(): Refreshed automatically
- Fixed: Window background color under Windows XP

- Changed: StrF(Number) to StrF(Number, Precision)

1stJanuary 2002

PureBasic 2.80 - Happy New Year Releas

- Updated: Rewrote from scratch the compiler core: complex expression compliant
- Updated: Optimized the code output
- Added: /REASM compiler flag to allow source code reassembly after hand modifications
- Added: Possibility to use floats with API call.
- Fixed: float support (comparison, procedure, Abs(), Sin() etc..)
- Fixed: all known bugs

- Added: Sprite3D library: Create3DSprite(), Display3DSprite(), Transform3DSprite(), Free3DSprite(), Start3D(), Stop3D()
- Added: SaveImage()
- Added: Debugger routine for all commands
- Fixed: ExamineDirectory()
- Fixed: OpenFile() (Read wasn't working)

- Added: QuickHelp for almost all commands
- Added: Procedure direct jump support

28thNovember 2001

PureBasic 2.70

- Added: ChangeSysTrayIcon(), SysTrayIconToolIip(), ExpandTreeGadgetItem(), TreeGadgetItemState()
- Added: DisableMenuItem(), GadgetToolTip(), StatusBarIcon()
- Added: UseGadgetList(), TransparentSpriteColor(), ClipSprite(), CopySprite(), GrabSprite()
- Added: ProgramParameter()
- Added: Thread library
- Added: '!' support to include raw ASM command in the code source (directly managed by NAsm)
- Added: Multilevel (100) Undo/Redo in the editor
- Added: Colored syntax when pasting (Yes ;-)

- Updated: StatusBarText(): 2 flags for alignment (Center & Right)
- Updated: ReadData() now returns the number of byte read
- Updated: The debugger is now an high priority thread (much more responsible)

- Changed: PlaySound(), Added a flag to play looping
- Changed: SetStatusBarText() -> StatusBarText()
- Changed: InitSprite(): removed the sprite parameter

- Fixed: DatabaseQuery(), GetPathPart(), LoadSprite() (Can now load sprite of any size)
- Fixed: CloseScreen(): can now switch FullScreen/Windowed without any problems. Cool.
- Fixed: Compiler bugs (MultiArray in Procedures, Read data in Procedures)
- Fixed: Flickering in the editor

5thNovember 2001

PureBasic 2.60

- Added: CopyMemory(), CatchJPEGSprite(), LoadJPEGSprite(), WindowMouseX(), WindowMouseY()
- Added: MovieSeek(), MovieInfo(), DrawImage(), ScreenOutput(), WindowOutput(), ImageOutput(), CreateImage()
- Added: Database library
- Added: Compressor library
- Added: Console library (By Sylvain)
- Added: Possibility to use the 2DDrawing library directly on Game screens
- Added: XOR and Fill/Outline mode for 2D Drawing functions
- Added: -1 feature to FreeMemory() to free all banks in one call.
- Added: New flag for RunProgram(): run synchronously and possibility to hide it.
- Added: Powerful ASM Monitor in the debugger (in a BASIC language !)
- Added: Variable viewer in the debugger

- Changed: All old MemoryBank functions renamed.
- Changed: ReadMemory() and WriteMemory renamed -> ReadData(), WriteData() (For better logic with other commands)
- Changed: The PureBasic library format (see the SDK for more info)
- Changed: DrawingOutput() has been renamed to StartDrawing() and doesn't take a WindowID() anymore (but WindowOutput(), ScreenOutput() or ImageOutput()
- Changed: Eof() take one parameter now.

- Fixed: StopModule() (Removed the #Module) parameter
- Fixed: A small compiler bug
- Fixed: PlayMovie()
- Fixed: Debugger while using ASM commands inside PureBasic
- Fixed: Clipboard PASTE within the editor doesn't change the font anymore

23thSeptember 2001

PureBasic 2.50

- Added: Mouse library
- Added: Movie library
- Added: Sort library
- Added: Procedure address (@ProcedureName())
- Added: support for 'Console' executable format
- Added: DisplayTranslucentSprite(), DisplayAlphaSprite(), DisplayShadowSprite(), DisplayRGBFilter(), ChangeAlphaIntensity(), ClearScreen() OpenWindowedScreen(), DisplaySolidSprite(), CloseScreen(), SetFrameRate(), IsScreenActive(), StartSpecialFX(), StopSpecialFX(), ResizeGadget() JoystickAxisX(), JoystickAxisY(), ChangeGamma(), SetWindowCallback(), Red(), Green(), Blue()

- Changed: LoadSprite()
- Changed: DisplayPalette (Removed the screen argument)
- Changed: ExamineJoystick()
- Changed: OpenScreen (added Text$ parameter)
- Changed: FontRequester (added initial fontname and size)
- Changed: FrameGadget (Added a border style flag)

- Fixed: big bugs in DirectX routines (Sprite, Keyboard, Movie). Now it multitasks very well !
- Fixed: icon support for ToolBar and Image library
- Fixed: SelectedFontName()
- Fixed: ClearGadgetItemList() when used with TreeGadget()
- Fixed: LoadFont() (Incorrect YSize)

- Added: optional Auto-save before compiling
- Added: Any font support
- Added: Enable/Disable syntax coloration
- Added: 2 new components for coloring: 'Normal Text' and 'Procedures/Commands'
- Added: Real-time language, font, color changing
- Added: new About window, much better ;-)

- Updated: ultra-fast syntax highlighting when loading the source file
- Updated: syntax highlighting behavior fixed and changed (much better)

1stAugust 2001

PureBasic 2.40

- Added: Data support commands: Read, Restore, Data, DataSection, EndDataSection
- Added: Float number support (early stage)
- Added: MemoryBank library
- Added: StatusBar library
- Added: Image library
- Added: Systray library
- Added: lot of new commands: EventLParam(), EventWParam(), ListIndex(), ListCount() and ChangeCurrentElement() ToolBarImageButton(), EventMouseButton(), UseDirectory()
- Added: CreatePopupMenu() and DisplayPopupMenu()
- Added: TreeGadget(), ImageGadget(), ButtonImageGadget(), AddTreeGadgetItem()
- Added: ListIconGadget(), AddListIconGadgetItem(), ChangeListIconGadgetDisplay(), AddGadgetColumn()

- Changed: the default type from 'Word' (16-bit) to 'Long' (32-bit)
- Changed: WaitWindowEvent()/WindowEvent() returns all Windows events !
- Changed: ComboBoxGadget(), PanelGadget() and ListViewGadget() (removed the useless Text$ parameter)
- Changed: ExamineDirectory() -> Number added to allow to examine several directories at the same time

- Fixed: CopyFile() (Overwrite doesn't work)
- Fixed: FrontColour() (Text colour doesn't change..)
- Fixed: GetGadgetState(), SetGadgetState() and RemoveGadgetItem() to support PanelGadget

- Removed: InitWindow(), InitRequester(), InitToolBar(), InitFont(), InitFile() and InitMenu() (No more needed...)

17thMay 2001

PureBasic 2.30

- Added: to editor: Drag&Drop on the main window, auto registry support for .pb files, auto indent, Tab/Shift+Tab when a block is selected to indent easily
- Added: tons of new commands: GetGadgetState(), SetGadgetState(), AddGadgetItem(), RemoveGadgetItem(), ClearGadgetItemList() PanelGadget(), ClosePanelGadget(), TextGadget(), SpritesCollision(), Delay(), OptionGadget(), FrameGadget() Loc(), PeekW/B(), PokeW/B(), GetPathPart(), GetFilePart(), RunProgram(), DoubleClick(), PathRequester()
- Added: 'Tab' support on Gadget lib.
- Added: compiler directives: CompilerIf/Else/Endif, CompilerSelect/Case/Default/EndSelect
- Added: the CD-Audio library
- Added: the FileSystem library
- Added: a built-in ICON linker (no more need GoRC)

- Enhanced: Improved the debugger (step-by-step now works perfectly)
- Enhanced: Optimized the generated executable (smaller and faster)
- Enhanced: Full rewrite of the compiler expression processor core
- Enhanced: Reduced the compiler and editor size (90kb instead 148kb and 33kb instead of 96kb)
- Enhanced: Tons of little improvements and bug fixes too long to enumerate

- Fixed: some nasty bugs in the compiler

- Changed: LSR, LSR to << and >> respectively
- Changed: AddComboBoxItem and AddListViewItem() to AddGadgetItem()

25thMarch 2001

PureBasic 2.20

- Added: debugger runtime support for all pure libraries. A program no more crashes so easily. It's much easier now to catch up bugs !
- Added: NT4.0 support for multimedia libraries (Sprite, Palette, Sound & Keyboard), which allows the development of games or multimedia applications running on WinNT4 too !
- Added: some new functions : Lof(), ReadMemory(), WriteMemory(), PeekS(), PokeS(), NetworkClientEvent(), SetGadgetFont(), WaitWindowEvent(), FileSeek()
- Added: a brand new Module library to allow an easy replay of Protracker, Fastracker or Impulse tracker modules.
- Added: project settings save for each file (Executable name, Compiler options etc...)
- Added: preference window to customize the editor easily (color, default directory etc..)
- Added: multi-language support for the editor (english, french and german)
- Added: icon (.ico) support when creating an executable !
- Added: Win32 help support (when pressing F1 on a windows function)

- Updated: documentation

- Fixed: fixed the compiler a lot, much reliable now.

26thFebruary 2001

PureBasic 2.10

- Added: the debugger to walk easy trough a program. It features step-by-step, stop, continue, quit (useful to quit an infinite loop...) and can be invoked and controlled via the source code with the following commands: CallDebugger, EnableDebugger, DisableDebugger
- Added: new commands: ListViewGadget(), AddListViewItem(), GetGadgetText(), SetGadgetText(), PeekS(), SizeOf()
- Added: Multi-language to the editor (French, German, English)
- Added: Microsoft Windows © resident file containing all the constants and structures needed for easy OS programming under PureBasic.

- Improved the editor a lot: contextual help (F1 on a keyword), Goto, Compiler Options, much better syntax highlighting, '.prefs' file

- Fixed: lot of bugs and improved the whole stability

17thDecember 2000

PureBasic 2.00

- Added: 2D Drawing library

- Fixed: all know bugs, and some major enhancements

28thNovember 2000

PureBasic 2.00 PR 3

- Added: Requester library
- Added: ToolBar library
- Added: Dedicated editor (syntax coloring and direct access to compiler !)

- Fixed: DirectX related bugs

12thNovember 2000

PureBasic 2.00 PR 2

- Added: Sprite library
- Added: Joystick library
- Added: Keyboard library
- Added: Sound library
- Added: Network library
- Added: Palette library

- Fixed: Numerous bugs. Thanks to all bug reporters !

22thOctober 2000

PureBasic 2.00 PR 1

- Inition: First public release of PureBasic x86. For testing purpose only