History

7th March 2023 : Version 6.01 LTS

- Added: #PB_Mail_UseSMTPS and #PB_Mail_Debug for CreateMail()

- Updated: GCC on Windows for C backend to 12.2.0 version

- Fixed: A lot of compiler and libraries bugs

22th June 2022 : Version 6.00 LTS

- Added: Apple M1 support !
- Added: Raspberry support (32-bit and 64-bit) !
- Added: a new C backend compiler for all PureBasic versions
- Added: #PB_Compiler_Backend, #PB_Backend_C and #PB_Backend_Asm compiler constants
- Added: #PB_Compiler_64Bit and #PB_Compiler_32Bit compiler constants
- Added: #PB_Compiler_Optimizer which is set to #True if the optimizer is enabled
- Added: support for Windows 11, OS X 11 and 12 for OSVersion()
- Added: /OPTIMIZER, -z, --optimizer flag to the commandline, and a 'Use code optimizer' checkbox in IDE 'Compiler Options' to turn on C optimizations
- Added: auto DPI support for Menu and ToolBar library (Windows)
- Added: WebGadget() support for GTK3 on linux
- Added: CreateShader(), CreateShaderMaterial(), MaterialShaderAutoParameter(), MaterialShaderParameter(), MaterialShaderTexture()
- Added: optional parameter to MeshFace() to create a quad
- Added: optional force vector to WorldGravity()
- Added: optional position mode to ApplyEntityForce()
- Added: GetEntityMesh(), CreateCubicTexture(), CreateAnimatedMaterial()
- Added: new mode to CreateDataMesh(): #PB_Mesh_DiagonalShortestLength, #PB_Mesh_DiagonalClosestNormal, #PB_Mesh_DiagonalAlternate, #PB_Mesh_DiagonalRegular1, #PB_Mesh_DiagonalRegular2
- Added: new structures: Vector3, Vector4
- Added: predefined shaders: #PB_Material_ColorShader, #PB_Material_PerpixelShader, #PB_Material_BumpShader, #PB_Material_SkyShader, #PB_Material_WaterShader, #PB_Material_WaterShaderRTT, #PB_Material_OceanShader, #PB_Material_PointSpriteSphereShader
- Added: new modes for SetMaterialAttribute(): #PB_Material_PointSprite, #PB_Material_DepthBias
- Added: new optional 'Color' parameter to CreateMaterial()
- Added: new optional 'SpecularColor' parameter to MaterialShininess()
- Added: new optional 'v' and 'w' parameter to MeshVertexTextureCoordinate()
- Added: new optional 'Lod' parameter to CreateCamera()
- Added: new modes for AddMaterialLayer(): #PB_Material_ModulateX2, #PB_Material_ModulateX4, #PB_Material_AddSigned, #PB_Material_Substract, #PB_Material_BlendDiffuseAlpha, #PB_Material_BlendCurrentAlpha
- Added: New contextual constant display for AutoComplete in IDE (Fr34k - https://github.com/fantaisie-software/purebasic/pull/183)
- Added: 3 new triggers for custom tools in IDE: "OpenFile - Non-PB binary file", "OpenFile - Non-PB text file", "OpenFile - with specific extension" (HeX0R101 - https://github.com/fantaisie-software/purebasic/pull/195)
- Added: New 'Replace' shortcut (CTRL+H) which opens the find dialog with replace enabled in IDE (ChrisRfr - https://github.com/fantaisie-software/purebasic/pull/184)

- Updated: SetMaterialColor() can now use several colortypes at once using '|'
- Updated: fasm, polink, polib and porc to lastest versions (Windows)
- Updated: Movie library on OS X to support modern OS X version
- Updated: Mouse library on Windows to use RawInput instead of DirectX to support HighDPI mouse
- Updated: SQLite to 3.38.2
- Updated: zlib to 1.12.12
- Updated: libpq (PostgreSQL) to 14.2

- Changed: renamed structures PB_MeshFace -> MeshFace and PB_MeshVertex -> MeshVertex
- Changed: the name of the /EXE commandline flag to /OUTPUT to be more coherent (still work for backcompatibilty but not documented anymore)
- Changed: the short version of /CONSTANT from '-o' to '-co' as '-o' is now used for /OUTPUT
- Changed: the way the map elements are created when using passive syntax, to be more consistent
- Changed: the default subsystem for screen/sprite is now OpenGL on Windows for more consistency. DirectX9 is still available as a subsystem.
- Changed: enabled backface culling for sprite OpenGL subsystem to be faster and be in line with DirectX9/11
- Changed: InitNetwork() is no more needed to use network functions (deprecated)

- Removed: x86 version of PureBasic for OS X as it's no more supported since OS X Catalina (Minimum supported OS X is now 10.10 - released in 2014).
- Removed: the 'Help' library on Linux
- Removed: Nvidia CG support for OGRE as it's no more supported by Nvidia since a while
- Removed: ToolBarStandardButton() as it doesn't support high DPI

23th November 2020 : Version 5.73 LTS

- Added: #PB_HTTP_WeakSSL to HTTRequest() to support older servers
- Added: Added #PB_HTTP_Debug to print in the console debug information
- Added: New indentation option (Shardik): link
- Added: Add option to auto-wrap Find at end of file (kenmo) link
- Added: New editor shortcuts (upper/lower/invert case) (kenmo) link

- Updated: Updated SQLite to 3.33.0

- Fixed: Autocomplete on Linux (mk-soft) link
- Fixed: IDE Crash on MacOS with TouchBar (mk-soft) link
- Fixed: Some compiler and libraries related bugs

30th March 2020 : Version 5.72 LTS

- Added: #PB_HTTP_Headers to HTTPInfo() to get the headers
- Added: #PB_HTTP_HeadersOnly to HTTPRequest() to only request the headers (GetHTTPHeaders() is now deprecated)
- Added: Scintilla word chars selection as user preference in IDE (kenmo) link
- Added: Zoom keyboard shortcuts in IDE (kenmo) link
- Added: New editor shortcut functions in IDE (kenmo) link
- Added: Memview (idle) link

- Changed: PostEvent() now returns a result as it could fail in some extrem case
- Changed: Sign() now returns an integer instead of a float.
- Changed: In MS WIndows, the default font changed from MS Shell Dlg to Segoe UI size 9.

- Updated: OpenJPEG library to version 2.3.1
- Updated: PCRE library to version 8.44
- Updated: libpng to version 1.6.37
- Updated: libjpeg to version 9d
- Updated: libtiff to version 4.1.0
- Updated: expat to version 2.2.9
- Updated: libflac to version 1.3.3
- Updated: libogg to version 1.3.4
- Updated: libvorbis to version 1.3.6
- Updated: sqlite to version 3.31.1
- Updated: curl to version 7.68.0

- Fixed: 'Find Previous' freezing in IDE (kenmo) link
- Fixed: Gadgets Drag'n'Drop Position in FormDesigner (ChrisR) link
- Fixed: Re-enable buttons bug in window 'Find in Files' in IDE (Sicro) link
- Fixed: Display errors in window '#WINDOW_Form_Parent' of the FormDesigner (Sicro) link
- Fixed: Many documentation issues (Andre and Mesa)
- Fixed: Some compiler and libraries related bugs

16th August 2019 : Version 5.71 LTS

- Fixed: Some compiler and libraries related bugs

2nd January 2019 : Version 5.70 LTS

- Added: Brand new QT subsystem for Linux
- Added: HTTPRequest(), HTTPRequestMemory() (sponsored by c-wayne)
- Added: UseMySQLDatabase() (sponsored by Paul)
- Added: DPI aware support for Windows app
- Added: #PS, #NPS, #PS$ and #NPS$ constants (Path separator character depending of the OS)
- Added: #PB_JSON_NoClear support to ExtractJSONStructure
- Added: #PB_Path_Winding filling mode for VectorDrawing
- Added: DesktopResolutionX(), DesktopResolutionY(), DesktopScaledX(), DesktopScaledY(), DesktopUnscaledX(), DesktopUnscaledY()
- Added: an optional 'Mode' parameter for OpenConsole()
- Added: MaterialTextureAliases()
- Added: #PB_Vehicle_IsInContact, #PB_Vehicle_ContactPointX/Y/Z for GetVehicleAttribute()
- Added: #PB_Vehicle_ContactPointNormalX/Y/Z for GetVehicleAttribute()
- Added: #PB_Vehicle_CurrentSpeedKmHour, #PB_Vehicle_ForwardVectorX/Y/Z for GetVehicleAttribute()
- Added: #PB_Material_ProjectiveTexturing for SetMaterialAttribute()
- Added: ParticleScaleRate(), ParticleAngle(), CameraReflection()
- Added: BuildMeshLod(), MeshVertex(), CreateDataMesh()
- Added: EntityDirection(), EntityDirectionX(), EntityDirectionY(), EntityDirectionZ()
- Added: #PB_Local/#PB_Parent/#PB_World support for ApplyEntityForce(), ApplyEntityImpulse(), ApplyEntityTorque() and ApplyEntityTorqueImpulse()

- Fixed: Some compiler and libraries related bugs

4th February 2018 : Version 5.62

- Fixed: Some compiler and libraries related bugs

7th January 2018 : Version 5.46 LTS

- Fixed: Some compiler and libraries related bugs

12th September 2017 : Version 5.61

- Fixed: The touchbar issue on new MacBook Air and the DebugOutput problem on Windows.
- Fixed: Fix a lot of bugs. Notable bug fixes are prototype and quad return were broken, MacBook Pro crash, and optionGadget on Windows now support keyboard.
- Updated: MacOS X package is now self contained to be OSX Sierra compliant

- Updated: This version is signed with new certificates to avoid false positive (antivirus).

10th August 2017 : Version 5.45 LTS

- Fixed: The touchbar issue on new MacBook Air and the DebugOutput problem on Windows.
- Fixed: Fix a lot of bugs. Notable bug fixes are prototype and quad return were broken, MacBook Pro crash, and optionGadget on Windows now support keyboard.
- Updated: MacOS X package is now self contained to be OSX Sierra compliant

- Updated: This version is signed with new certificates to avoid false positive (antivirus).

2nd March 2017 : Version 5.60

- Added: GIF decoder support
- Added: Large icons and text support to ToolBar library
- Added: SetImageFrame(), GetImageFrame(), ImageFrameCount(), AddImageFrame()
- Added: RemoveImageFrame(), SetImageFrameDelay(), GetImageFrameDelay()
- Added: UserAgent support to ReceiveHTTPMemory(), ReceiveHTTPFile() and GetHTTPHeader()
- Added: #PB_Http_NoRedirect support for GetHTTPHeader()
- Added: "Joe Doe <joe.doe@domain.com>" email format support for SendMail()
- Added: HTTPProxy() for Http related commands proxy support
- Added: Compression level support for CreatePack() and CompressMemory()
- Added: ParticleAcceleration(), ParticleColorFader(), ParticleEmitterAngle()
- Added: #PB_Material_AlphaReject, #PB_Material_TAM and #PB_Material_EnvironmentMap support to SetMaterialAttribute()
- Added: new 'Layer' optional paramater to SetMaterialAttribute()
- Added: new orientation modes for SetNodeAnimationKeyFrameRotation() and AddStaticGeometryEntity()
- Added: GetUserDirectory() to get user specific directories
- Added: more flexibility to Base64Decoder to handle non padded input
- Added: Base64Encoder() and Base64Decoder() which takes string as input/output for easier use (see name change of the previous commands below)
- Added: color constants like #Black, #Blue etc. for all OS
- Added: Event() to get the current event (mainly useful from callback)
- Added: #PB_Canvas_Container support to have a container behaviour for canvas
- Added: #PB_EventType_Resize support for PanelGadget(), ContainerGadget(), CanvasGadget() and ScrollAreaGadget()
- Added: #PB_ListIcon_ColumnCount to GetGadgetAttribute() for ListIconGadget() to get the column count
- Added: #PB_All support to RemoveGadgetColumn() to remove all the columns
- Added: (IDE) templates are now saved when created to prevent lost if the IDE is not properly closed
- Added: (IDE) jump to a procedure now automatically unfold it if it was folded
- Added: (IDE) new specific popup menu for file tab to ease source file management
- Added: (IDE) find previous (reverse find)

- Changed: renamed previous command Base64Encoder() to Base64EncoderBuffer()
- Changed: renamed previous command Base64Decoder() to Base64DecoderBuffer()
- Changed: removed 'define.b' syntax to change default type as it could create hard to find bugs.

19th December 2016 : Version 5.51

- Updated: MacOS X package is now self contained to be OSX Sierra compliant

- Fixed: Some compiler and libraries related bugs

19th November 2016 : Version 5.44 LTS

- Updated: A bug fix version of the current LTS branch.
It fix important Linux issues and brings a new way to install the app on OS X to comply with OSX Sierra. Now the whole purebasic directory is embedded in the PureBasic.app, so if you need to use the commandline, you will have to add the path PureBasic.app/MacOS/Content/Resources/compiler to the $PATH.

25th July 2016 : Version Version 5.43 LTS

- Updated: The new version of the long term support branch of PureBasic.
All the fixes done on the 5.50 should be also in this version.

25th July 2016 : Version 5.50

- Added: Vehicle library to create 3D vehicles with wheels easily
- Added: PickBody() to easily manipulate a 3D body with mouse
- Added: CreateTube(), CreateTorus(), CreateIcoSphere() and CreateCapsule()
- Added: #PB_Entity_PlaneBody and #PB_Entity_ConeBody body type
- Added: GenericJoint() to create any type of joint
- Added: Bounding box size support to CreateEntityBody()
- Added: RegisterFontFile() to use custom fonts file easily
- Added: PathLength(), PathPointX(), PathPointY(), PathPointAngle()
- Added: PathBoundsX(), PathBoundsY(), PathBoundsWidth(), PathBoundsHeight() to get the bounding box of a path
- Added: PathSegments(), AddPathSegments() to get/set a path in string format
- Added: DebuggerError(), DebuggerWarning(), CloseDebugOutput()
- Added: ResetStructure() which clear and reinitialize a structure buffer
- Added: UTF8() and Ascii() to create easily UTF8 and Ascii string buffers (needs to be freed with FreeMemory())
- Added: FormatNumber() to have money like formatted numbers easily
- Added: #PB_MessageRequester_Info, #PB_MessageRequester_Error and #PB_MessageRequester_Warning for MessageRequester()

- Updated: SQLite version 3.13.0

- Changed: ParticleVelocity() to support current velocity.

- Removed: ASCII mode for internal PureBasic string representation, PureBasic is now unicode only.

1st March 2016 : Version 5.42 LTS

- Removed: 'generate event loop' option in the Preferences/Form
- Fixed: Some compiler and libraries related bugs

23th December 2015 : Version 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

16th October 2015 : Version 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()

27th October 2014 : Version 5.24 LTS

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

27th October 2014 : Version 5.31

- Fixed: Some compiler and libraries related bugs

25th July 2014 : Version 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.

23th July 2014 : Version 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()

17th March 2014 : Version 5.22 LTS

- Fixed: Some compiler and libraries related bugs

20th November 2013 : Version 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

17th September 2013 : Version 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

19th March 2013 : Version 5.11

- Fixed: Some compiler and libraries related bugs

14th February 2013 : Version 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 file flags.
- Added: #PB_Event_RightClick, #PB_Event_LeftClick and #PB_Event_LeftDoubleClick events
- 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_<Type> with #PB_<Type> 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

5th November 2012 : Version 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), through 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()

21th May 2012 : Version 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

7th November 2011 : Version 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)

8th September 2010 : Version 4.51

- Fixed: Quite some compiler and libraries related bugs

7th June 2010 : Version 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.

1st February 2010 : Version 4.41

- Fixed: Quite some compiler and libraries related bugs

1st December 2009 : Version 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)

3rd June 2009 : Version 4.31

- Fixed: Many compiler and libraries related bugs

16th December 2008 : Version 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

23rd May 2008 : Version 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

4th November 2007 : Version 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

5th October 2005 : Version 3.94

It's finally here ! It's the result of many months of hard work and we are very happy to present the OS X version of PureBasic. It is very complete, proposes native support of all PureBasic libraries and can be used either on the command line (for command line freaks) or via the provided IDE. There is even an optional support for GTK 1 and 2 to test the application look and feel with this API (when porting from OS X to Linux for example). Don't hesitate to play with it and reports any problems to http://forums.purebasic.com. Have fun !

- Built-in native IDE and debuggers (standalone or console)
- Native OS X support for GUI (Carbon), sprites (OpenGL), sounds and movies (QuickTime).
- Very fast PowerPC assembler code generation, which allows excellent performances and reduced executable size
- Built-in OS X API support (only for a few functions for now)
- The IDE and debuggers are fully written in PureBasic, which prove the portability concept between OS X, Windows and Linux
- Most of the PureBasic commandset is supported