Purebasic Changelog

What's new in Purebasic 5.50

Sep 17, 2016
  • Major release
  • Lot of new 3D commands, Unicode only compiler and many more

New in Purebasic 5.42 (Jun 11, 2016)

  • Bug-fix release
  • Fixed some compiler and libraries bugs

New in Purebasic 5.40 (Nov 21, 2015)

  • Added VectorDrawing, CGI, HTTPS and much more:
  • 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 and #PB_Entity_EnableContactResponse 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: RemovePackFile()
  • Removed: #PB_Packer_CompressedSize support for ZIP and 7z archives with PackerEntrySize()
  • Removed: AvailableScreenMemory()

New in Purebasic 5.31 (Nov 3, 2014)

  • Fixed:
  • Some compiler and libraries related bugs

New in Purebasic 5.22 (Apr 16, 2014)

  • Bug-fix release
  • Fixed some compiler and libraries bugs

New in Purebasic 5.11 (Mar 20, 2013)

  • Bug-fix release
  • Fixed some compiler and libraries bugs Pure Basic compiler news

New in Purebasic 5.10 (Feb 15, 2013)

  • Added: Form designer is now integrated to the IDE !
  • Added: Fully reworked Packer library with ZIP, BriefLZ, 7z (unpacker only), LZMA and JCALG1.
  • Added: full IPv6 support to the network library.
  • 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
  • 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 preferences
  • 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)
  • Added: #PB_File_Append and #PB_File_NoBuffering for OpenFile(), ReadFile() and CreateFile()
  • 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()
  • Added: 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: #PB_Compiler_LineNumbering, #PB_Compiler_InlineAssembly, #PB_Compiler_EnableExplicit
  • Added: #PB_Compiler_ExecutableFormat, #PB_Compiler_IsIncludeFile
  • Added: #PB_Compiler_IsMainFile, #PB_Compiler_Filename
  • 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
  • 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
  • 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
  • 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(), ScaleNode()
  • Added: UpdateMesh(), EnableManualEntityBoneControl(), MoveEntityBone(), RotateEntityBone(), MeshIndex()
  • Added: 'Type' optional parameter to AddSubMesh()
  • Added: 'Type' parameter to FinishMesh()
  • Added: 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, same for ScaleNode()
  • 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

New in Purebasic 5.00 (Nov 12, 2012)

  • 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 to compile 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 Tookit 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, #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()
  • Added: LensFlareEffectColor(), 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()

New in Purebasic 4.20 (Jun 23, 2008)

  • 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