Page 1 of 5

PureBasic 4.40 Beta1 released!

Posted: Fri Aug 14, 2009 12:11 am
by freak
Hey there,

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

Code: Select all

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

The PureBasic Team

Posted: Fri Aug 14, 2009 12:43 am
by cas
Woow, great...

My favourite new features:

Code: Select all

- Added: AddWindowTimer(), RemoveWindowTimer(), #PB_Event_Timer, EventTimer() 
- Added: AES to cipher library: AESEncoder(), AESDecoder(), StartAESCipher(), AddCipherBuffer(), FinishCipher() 
- Added: ClearStructure(*Pointer, Structure)
8)

Thanks.

Posted: Fri Aug 14, 2009 12:46 am
by Demivec
Awesome! I'm jumping in to the new beta to test many of these features right away!

Thanks. :D

Posted: Fri Aug 14, 2009 12:57 am
by Niffo
Thank you very very very much for this new version ! All my dreams for PB are in the changelog and much more ... Thank you for the consideration about "Feature Requests and Wishlists" ! I'm going to test all that new fonctionalities :)

=> Paypal donation

Posted: Fri Aug 14, 2009 1:02 am
by eddy
cool

Posted: Fri Aug 14, 2009 1:11 am
by Inf0Byt3
Thank you very much for all the hard work! The features in this version are astonishing, especially the project management and the AES lib :D.

Posted: Fri Aug 14, 2009 1:50 am
by Intrigued
Great job PB team and thanks!

Posted: Fri Aug 14, 2009 2:51 am
by idle
Great stuff

Posted: Fri Aug 14, 2009 3:02 am
by WilliamL
I'm really excited about the release of 4.40b1 with all the new commands. I'll being trying the new version on my Mac.

I've been using PureBasic now for about 2 years and I sent in $15 to show that I value the product. It isn't much considering the quality of the product and the free upgrades and accessible support (oh, and I like the forum too) but maybe others will follow my lead and it will amount to more.

Thanks Fred (and Timo too)

Posted: Fri Aug 14, 2009 3:23 am
by Amundo
Wow, thanks PB Team!!!!!!!!!!

CTRL-D to duplicate a line in the IDE!
Projects!
Keyword matching!
MAPS! (I don't really know how to use them, but they look useful)

Nice!

Posted: Fri Aug 14, 2009 3:48 am
by Blue
Many thanks, PB Guys.
Always pleasant to see new and improved things.
Now. let's find out which ones really hold their promises.... :lol: :lol:


@Amundo:
Amundo wrote:... CTRL-D to duplicate a line in the IDE!
:shock:
That key combination has been available (and operative) for a long, long time already !
What are you saying ?

Yes!!!

Posted: Fri Aug 14, 2009 4:25 am
by Randy
Wow, I love the additions and changes! I had just finished reinventing the wheel (although it was more of a hexagon shape than round but that's beside the point) with RTrim using pointers and what-not to strip off unwanted characters from the right and now it is native.

Maps... these have been something my latest project needed for two weeks and now they are alos native. And the IDE looks nice. So far, the beta hasn't broken any of my routines so that's a good sign. :)

Thanks again guys... Purebasic is the greatest!

[Edit] Structure copying is another nice feature. :)

I found a bug with the display. I added files to a project and then created it. The project screen displays regardless of the tab I choose although sometimes I can click in the middle of the screen and part of my source will show. Click on any tab and the project screen comes back.

Randy

Posted: Fri Aug 14, 2009 7:03 am
by eesau
All of this must have been really hard work, so a big thank you! Excellent work, as always.

Posted: Fri Aug 14, 2009 8:25 am
by Vera
Thanks for your continuously enthusiastic work :D

Though I won't be able to realy realize the changes now, I'm looking forward to the Project management which I've been missing ever since.

cheers ~ Vera

Posted: Fri Aug 14, 2009 8:37 am
by Comtois
Just to let you know :

I created a project with about 20 files.
Initially all the options for the files were checked.

Then by making various changes in the options for some files (by checking or unchecking the option 'load file when opening the project), and also in the project options (When opening the project ...), and closing and opening the project at each change, after some manipulation of this kind (but impossible to remember in what order) the IDE crashed, i get an IMA.

Before submitting a bug report, I have to found how I got this crash.


Thank you for this new version, great job.