Category: Releases

Big Christmas Interview with Fred…

Posted by – December 17, 2012

“Surprise!” – yes, after a long time I have done a new interview with Fred. And this has become really huge (around 80 Q & A!), in which Fred tell us more about himself, but above all about the history, current situation and future development of PureBasic. I was able to elicit some things from him, which will be included in the forthcoming (as beta) version 5.10…

Read more in the News on PureArea.net

PureBasic 4.60 Beta1 released!

Posted by – April 4, 2011

Its been quiet around here for a while, but now there is big news: The first public beta of the upcoming 4.60 release is out!

This release is mostly about the 3D side of things, but there are new features for application programmers as well. The OGRE engine was updated to version 1.7.0 and we switched the physics engine from ODE to Bullet. Furthermore, there are a ton of new 3D libraries and commands. You can see the full list below. The 3D commands are not documented yet, but we will put up some examples to demonstrate them.

A special thanks to G-Rom and TMyke from the french forum for their help on the new 3D commands!

On the application side of things, the most notable addition is the CanvasGadget() command. It is a simple drawing surface that provides detailed mouse and keyboard events to easily implement custom data views or controls (all cross-platform of course). You can see this new gadget in action in the IDE already: The new file panel and the new color picker tool both make use of it. Other than that, there are some smaller new commands like additions to the LinkedList library for example. All new non-3D commands are already documented in the manual.

The IDE got some additions as well, like the ability to build projects directly from the command-line, or the option to be warned when a file is changed on disk while open in the IDE. Unfortunately, the automation framework that I talked about here on the forum did not make it into this release. It wasn’t finished in time, and its not a big enough priority to justify delaying this release any longer.

Finally, we are in the process of changing the PureBasic documentation to be more precise and readable when it comes to function parameters and return values. This is still a work in progress which should be finished for the final release. Comments on the new structure are welcome.

These are the changes:

Libraries:
- added CanvasGadget(), CanvasOutput()
- added SetGadgetItemData() for PanelGadget
- added MoveElement(), MergeLists(), SplitList() commands
- added RandomizeList(), RandomizeArray()
- 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 ‘Joint’ library
- added ‘SpecialEffect’ library
- added ‘StaticGeometry’ library
- added CameraPitch(), CameraRoll(), CameraYaw(), SwitchCamera()
- added ApplyEntityForce(), ApplyEntityImpulse(), EntityPitch(), EntityRoll(), EntityYaw(), GetEntityAttribute(),
GetEntityMaterial(), SetEntityAttribute(), SetEntityMaterial()
- added LightDiffuseColor(), SpotLightRange(), LightLookAt(), LightPower(), DisableLightShadows()
- added MaterialDepthWrite(), MaterialSelfIlluminationColor(), MaterialShininess(), GetScriptMaterial()
- added BuildMeshShadowVolume(), CreateLine3D(), CreateCube(), CreateSphere(), CreateCylinder(), CreatePlane(), AddSubMesh()
MeshVertexCount(), UpdateMeshBoundingBox(), MeshRadius(), AddMeshVertex(), MeshVertexNormal(), MeshVertexColor()
MeshVertexTextureCoordinate(), AddMeshFace(), FinishMesh(), NormalizeMesh(), SaveMesh(), SetMeshMaterial(), SubMeshCount()
TransformMesh()
- added NodePitch(), NodeRoll(), NodeYaw()

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

- removed: Get/SetEntityMass(), Get/SetEntityFriction()
- removed: SetMeshData() (temporary, needs to be updated)

IDE:
- added IDE options for commandline 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
- new Color Picker tool
- enabled font selection in IDE for OSX
- 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)

Manual:
- The manual is being updated to a new format which more clearly describes
individual function parameters and return values. This is not yet complete,
but will be finished for the final release.

Visit the announcement on the PureBasic forums here.

PureBasic 4.51 RC1 released!

Posted by – July 22, 2010

Just a quick note to tell you that the first release candidate for the 4.51 bugfix-release is out. Get it on your personal account. As usual it starts directly as RC, because there are no new features in this release.

PureBasic 4.50 Beta 1 released!

Posted by – April 1, 2010

Hello everybody!

… this is not an april fools joke… or is it? :P

We are proud to announce the first public beta of the upcoming PureBasic 4.50 release. As promised, the release cycle is much shorter than that of the 4.40 release which means that also the feature list is shorter. Nontheless, some long requested features have been implemented in this release which we hope you will enjoy very much.

The most notable are:

  • Support for Array, List and Map in structures:  These can be nested as much as you want, so you can have a Map-in-List-in-List if you want to. There is no need to call NewList, NewMap or Dim on these elements. They are created as soon as the outer structure is created. Dim can of course still be used to change the size of a dynamic array. Arrays inside structures can only have one dimension for the moment. The debugger has full support for this too. Embedded Arrays, Lists or Maps can be easily viewed by right-clicking on them in the Variable Viewer.
  • Image Library changes: We decided to abandon the support for images with depths below 24bit. Support for images with a palette was Windows-only anyway and had quite a number of bugs as well. The library now stores images internally only in 24bit or 32bit format which makes things a lot simpler. Images can still be loaded (and now also saved) at lower bit depth, so you can still work with them if you need to.
  • IDE Improvements:  The ability to select the used compiler in the compiler options allows to easily switch between different versions from the same IDE. It also allows to easily build and debug 32bit and 64bit applications from one IDE. Furthermore, some longer requested options like keyword sensitive indentation and indent guides have been added.
  • Debugger improvements: There is a brand new ‘Purifier’ tool in the debugger. It adds special ‘cookie’ values around variables, strings and allocated memory blocks to detect when the program accidentally writes past its intended target buffer. As this requires support from the compiler, it has to be activated in the compiler options to be available in the debugger. Furthermore, the already discussed network support and data breakpoints are now available.
  • Up to date documentation:  The english help file has already been updated with all documentation for these new features. The other languages will follow in the final release.

The feature list:

PureBasic 4.50 Beta 1
- Added support for Array, List, Map inside structures
- Added CopyList(), CopyMap(), CopyArray() commands
- Added FreeList(), FreeMap(), FreeArray() commands
- Added CopyStructure() and InitializeStructure() commands
- Added volume support to PlaySournd()
- Changed: The Image library now keeps images only in 24bit or 32bit (loading and saving works with other bit depths)
- Added Depth parameter to SaveImages()  (default is the original depth when the image was loaded)
- Added ImageDepth() flag to get the original or current image depth
- Added #PB_Image_Transparent flag for CreateImage()
- Added 32bit support to TGA image decoder
- Added 32bit support to BMP image encoder
- Added RoundRect() command to the 2DDrawing library
- Added #PB_2DDrawing_AllChannels mode for DrawingMode() (modifies all channels without blending)
- Added image support for the ComboBoxGadget command (not supported for editable ComboBox on Mac OSX)
- Added AbortFTPFile()
- Added graphical console functions to linux
- Added large file support to File lib on Linux/OSX
- Added RandomData() command
- Added CryptRandom(), CryptRandomData(), OpenCryptRandom(), CloseCryptRandom() commands
- Added many more Math functions: Exp(), ATan2(), Radian(), Degree(), [A]CosH(), [A]SinH(), [A]TanH(), IsNaN(), IsInfinity(), NaN(), Infinity()
- Added 'Debugger' Library to control some debugger actions from code

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 maximize button to Variable-, Memory-, Library Viewer and Callstack
- 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.
       (It is automatically corrected if the () is missing)

As always thank you to everyone who helps test these beta versions and reports bugs. Have fun with this new version and tell us any problems that you have. As usual, this version can be downloaded on your personal account on http://www.purebasic.com/

Oh, and Happy Birthday Fred!  :mrgreen:

The PureBasic Team

PureBasic 4.41 final is out

Posted by – January 31, 2010

Hello folks,

The final version of PureBasic 4.41 is out. It’s a stabilisation release, so we focused only on bug fixes and we have killed quite some :). You can grab it on your online account while it’s hot !

Have fun,

The Fantaisie Software Team.

PureBasic 4.41 RC1 Released!

Posted by – January 18, 2010

Hello everybody,

The next release is here. We spent quite some time fixing bugs, so here is the 4.41 bugfix release. As you can see it is called “Release Candidate”. I will explain what the different types of releases mean for PB now:

  • Alpha Release:  These are development snapshots and are not given out to the public. Features are usually not fully finished. This is just to get some early feedback from a few people during development.
  • Beta Release:  Beta means that all new features are implemented and nothing new will be added except bugfixes (except if a feature is found to be too incomplete to be usable).
  • Release Candidate:  This is what used to be the “final beta release” before. In the release candidates we plan to fix only very critical bugs. Minor bugfixes will be postponed to the next version. We release them when we think the version is ready. At this point even people that do not try the betas should test the new version as its the last chance to discover a critical bug.  This release starts directly as a release candidate as there are no new features to test and we only need the validation that we did not break anything with our bugfixes before going to the final release. Releases that introduce new features will have a beta phase as usual.

We also plan to do these bugfix releases (like 4.31 and 4.41) in between new feature releases on a regular basis from now on, so if you are not interested that much in new features and want the most stability then you can just skip the new feature releases and use the bugfix releases only. This way the new features have been tested for a while and bugs in them have been fixed. We also plan to try to shorten the release cycle as the 4.30 and 4.40 release cycles have been way too long.

Please test the new version and tell us whether the bugs marked as fixed are indeed gone and also let us know if any new problems show up. As usual this release can be downloaded on your account on http://www.purebasic.com/

The PureBasic Team

PureBasic 4.40 Beta1 released!

Posted by – August 14, 2009

The wait is finally over. The first beta of our brand new v4.40 release hits the public. It brings exciting new features in all areas:

  • On the compiler side there is the new ‘Threaded’ scope keyword to create thread-local variables and the new ‘.a’ and ‘.u’ native types for unsigned byte/word.
  • On the Library side there is the new ‘Map’ library to have easy hash-maps, and a completly rewritten 2DDrawing library with Sprite/ScreenOutput() even for OpenGl (slow though) and cool alpha-channel and gradient support for ImageOutput().
  • And finally, the IDE gets a much improved AutoComplete and Project management!
  • Not to forget, there is also a brand new x64 Version for Linux available!

You can find the new version on your download account on http://www.purebasic.com/

To better explain the new features, we put together some examples which can be found here: http://www.purebasic.com/beta/v440_examples.zip

Now it is up to you to help us make this new version as solid as possible. Please report any problems you have with this new version in our bug forums. Expecially the Linux x64 version needs much testing as it is brand new, and the IDE because of the massive changes that were needed for the Project management.

Here is the full changelog:

- Added: Linux x64
- Added: Map Library for hash tables
- Added: 'Threaded' Keyword for thread-local variables
- Added: Structure assignment copies the structure (a.point = b.point)
- Added: ClearStructure(*Pointer, Structure)
- Added: AES to cipher library: AESEncoder(), AESDecoder(), StartAESCipher(), AddCipherBuffer(), FinishCipher()
- Added: Dylib for OS X
- Added: Trim/LTrim/RTrim() got an optional character to trim
- Added: Added #PB_Function, #PB_OSFunction, #PB_Map to Defined()
- Added: ReverseString(String$), InsertString(String$, StringToInsert$, Position), RemoveString(String$, RemoveString$ [, Mode [, StartPosition [, NbOccurences]]])
- Added: Add blob support to databases
- Added: 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, ...): #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(Memory, Value, Size [, Type])
- Added: Global, Protected, Threaded, Shared and Static now accept a type to affect all default variable declaration.

- Added: AddWindowTimer(), RemoveWindowTimer(), #PB_Event_Timer, EventTimer()
- Added: #PB_Window_Tool - create tool windows
- Added: StatusBarProgress()
- Added: StatusBarImage() - now supports normal images (not just icons)
- Added: #PB_Checkbox_ThreeState flag to create a 3 state checkbox (state values: #PB_CheckBox_Checked, #PB_CheckBox_Unchecked, #PB_CheckBox_Inbetween)
- Added: ShortcutGadget()

- 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()
   - #PB_2DDrawing_AlphaBlend
   - #PB_2DDrawing_AlphaClip
   - #PB_2DDrawing_AlphaChannel
   - #PB_2DDrawing_Gradient

- Added: LinearGradient(), BoxedGradient(), CircularGradient(), EllipsicalGradient(), ConicalGradient(), 

CurtomGradient()
- Added: GradientColor(), ResetGradientColors()
- 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()
- Added: RGBA(), Alpha()

- Added #PB_PixelFormat_ReversedY - for pixel buffers that are stored upside-down (Windows ImageOutput or OpenGl)
- Removed: #PB_Image_DisplayFormat is now deprecated (value set to 32 to have 32bit as default)

- Added: #PB_OS_Windows_7 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'.
- Fixed: Image Decoders are now threadsafe

PureBasic IDE:
- 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

- Added: Project Management:
      - Autocomplete for all files within a project (even if not opened)
      - Multiple compiler settings for different compile targets
      - Compile all compile targets at once
      - Per-Project list of last opened files
      - Project ToolsPanel tool for fast access to the project files

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


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

If you are wondering where the parallel optimized sort functions are that i talked about in the blog, unfortunately these did not make it into this version. There were some problems and unfinished things in them and there just was not enough time to finish it for this version. Don’t worry though, it will be in the next one for sure :)

Have fun with this version!

PureBasic Museum

Posted by – June 18, 2009

We just opened the PureBasic museum, a section in your download account to get access to previous version of PureBasic, up to PureBasic Windows 2.02. That’s a kind of time travel for new developper who missed the start of this big adventure !

PureBasic 4.31 final released

Posted by – June 4, 2009

Just a quick note to inform you that the 4.31 bugfix-release has reached the final state. As usual it is available on the download accounts on purebasic.com.

Now the work on v4.40 can continue…

PureBasic 4.31 beta1 released

Posted by – May 25, 2009

A new PureBasic release has entered the beta stage. This is a bugfix-only release, there are no new features. The purpose of this release is to give those that only switch to newer releases once the beta-period is over a stable base to work with while the v4.40 release is going through the alpha and beta stages. We tried to focus on the major bugs in the 4.30 release and skip minor issues. Note that some even bigger bugs could not be resolved without major changes to the code and so we postponed these to the next release as well.

You can download it as usual on your user account.

Note: Since there are no new features and we want to get our focus back on the v4.40 release soon, this beta-period will be very short (maybe only one beta release). So if you reported bugs that are now marked as fixed, please test soon to verify that things work as they should now.

The v4.40 release is still a bit away, but we are working very hard on it. The list of new things is quite long again and we still need to work a few things out. Stay tuned.