It is currently Fri Aug 23, 2019 11:41 pm

All times are UTC + 1 hour




Post new topic Reply to topic  [ 64 posts ]  Go to page 1, 2, 3, 4, 5  Next
Author Message
 Post subject: PureBasic 5.30 is out !
PostPosted: Wed Jul 23, 2014 11:43 am 
Offline
Administrator
Administrator

Joined: Fri May 17, 2002 4:39 pm
Posts: 13611
Location: France
Hi folks,

That's it, PureBasic 5.30 final version is out ! The beta phase was longer than usual and even if it's holiday and summer time,
it's not a valid excuse ;). So let's jump a bit in PureBasic development internals, so you can better understand why.

First of all, the IDE is now fully unicode. It looks like a no brainer as in PureBasic it's more or less a checkbox to enable to have your program
working in unicode, right ? Well, not this time. The (new) IDE is around for almost 10 years now (09/21/2005) and it grew out of proportion
by including tons of features. We heavily use raw pointers to process string buffers quickly, and when switching to unicode, all the strings
went to UCS-2 (16-bit character). The stuff here is Scintilla is working internally in UTF-8, so all our comparisons between PB strings and Scintilla internal
didn't work anymore as one side was UTF-8 and the other UCS-2. Also, all the Scintilla commands which needed a buffer as parameter needed to be
changed as we mostly used a pointer to a PB string for this. We also had API calls here and here which required some adaptation work, and there was
no compiling error or runtime warning, so usually a nice crash was awaiting us when missing one and reaching this code section. To be honest,
it was quite a bit depressing to see a solid IDE get back to a shacky shape. This looks brighter now, and the unicode switch allowed us to fix long standing IDE
issues which is cool. It was a needed update, especially for the internal debugger which can now handle unicode programs. There is will be probably some quicks
left but it should be ironed out in future versions.

We also made important internal compiler changes to enable runtime serialization trough the XML and new JSON lib. It doesn't seem like a big deal
from the user point of view, but actually it is. What is runtime serialization ? In a nutshell: you have your nice linked list of complex
structured elements (which can contain dynamic map, array etc.) and you want to save it, so when you quit your program, you wont loose these data.
To do that, you had mostly only one way until now: walk the list, write all the fields of your structure to either a file or a database. It can be
time consumming to write this, and if you add a new field in your structure, you have to update both your load and save routines. With
5.30 serialization functions, you can do that with only one command. The compiler will flag your structure as a runtime one so it gets all
needed information (like fieldname, fieldtype etc.) and build special information table to allow full recursive analysing and dumping of the
structure data. We made this change generic in the compiler, so any command (even user libs) can use this feature. To allow this, we needed to support
'shadow parameters' in PB function call. Basically, when we declare a command parameter as "Runtime Structure" like in InsertJSONStructure(),
one hidden parameter is added to the function call to add more information to the structure. The same is done to when a runtime list, map or
array is need like in InsertJSONList/Map/Array(). Adding such a core feature in the compiler is always tricky and can creates new hard to track issues
(like stack mis-aligment), and that's why the IDE didn't started anymore on some Windows x64 computers.

And finally, a word about LTS (Long Time Support). The 5.30 is the first version which is released in parallel than an LTS version. That means than
we had to update our build servers and deployment tools to handle 2 concurrents versions (when building and when releasing). The website
also needed some update to handle this properly. It's small things but it does add-up and it in the end, it takes time to get everything right
and properly working.

As a side note, all the doc are now updated to the new format in every languages and I would like to thank Andre and Mesa for the
huge work done on this. A programming langage without a good doc is not a good programming langage.

I hope you didn't fell asleep when reading this, enjoy the new version !

The final list of changes:

Code:
- Added: New "Issue" tool for IDE to build todo/issue lists easily from comments.
- 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: 'Issues' IDE tool to collect and display TODO/FIXME markers inside the code
- 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()


Have fun,

The Fantaisie Software Team


Top
 Profile  
Reply with quote  
 Post subject: Re: PureBasic 5.30 is out !
PostPosted: Wed Jul 23, 2014 11:47 am 
Offline
Addict
Addict
User avatar

Joined: Sat Feb 19, 2005 2:46 pm
Posts: 1792
Location: Pas-de-Calais, France
Yeah ! Great work men, thank you very much ! :D


Top
 Profile  
Reply with quote  
 Post subject: Re: PureBasic 5.30 is out !
PostPosted: Wed Jul 23, 2014 11:48 am 
Offline
PureBasic Expert
PureBasic Expert

Joined: Fri Apr 25, 2003 5:24 pm
Posts: 7581
Thanks, Fred! :D

[Edit] Dammit djes, I wanted to be the first! :lol:

[Edit #2] I'm thanking Fred for the Announcement here.
Of course I thank Freak as well for all his contributions,
and to Andre for the docs, and whomever else helps
that I currently don't know about. ;)

_________________
I compile using 5.31 (x86) on Win 7 Ultimate (64-bit).
"PureBasic won't be object oriented, period" - Fred.


Top
 Profile  
Reply with quote  
 Post subject: Re: PureBasic 5.30 is out !
PostPosted: Wed Jul 23, 2014 11:55 am 
Offline
Always Here
Always Here
User avatar

Joined: Thu Jun 24, 2004 2:44 pm
Posts: 5754
Location: Berlin - Germany
thanks Fred :D

_________________
PureBasic 5.70 | SpiderBasic 2.21 | Windows 10 Pro (x64) | Linux Mint 19.2 (x64)
Old bugs good, new bugs bad! Updates are evil: might fix old bugs and introduce no new ones.
Image


Top
 Profile  
Reply with quote  
 Post subject: Re: PureBasic 5.30 is out !
PostPosted: Wed Jul 23, 2014 12:01 pm 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Wed Feb 01, 2012 3:30 pm
Posts: 739
Location: Nottinghamshire UK
Thanks Guys Great Work :)

IDE Title still showing as Beta 9 x64 x86

Zebuddi. :)

_________________
malleo, caput, bang. Ego, comprehendunt in tempore


Top
 Profile  
Reply with quote  
 Post subject: Re: PureBasic 5.30 is out !
PostPosted: Wed Jul 23, 2014 12:04 pm 
Offline
Addict
Addict

Joined: Thu Nov 01, 2007 5:37 pm
Posts: 1981
Location: Germany
Thanks (also for the little insight on the internals)! 8)

_________________
If any of you native English speakers have any suggestions for the above text, please let me know (via PM). Thanks!


Top
 Profile  
Reply with quote  
 Post subject: Re: PureBasic 5.30 is out !
PostPosted: Wed Jul 23, 2014 12:21 pm 
Offline
Addict
Addict
User avatar

Joined: Thu Jan 10, 2008 1:30 pm
Posts: 1211
Location: Germany, Glienicke
Thank you!

_________________
ImageImage


Top
 Profile  
Reply with quote  
 Post subject: Re: PureBasic 5.30 is out !
PostPosted: Wed Jul 23, 2014 12:29 pm 
Offline
Enthusiast
Enthusiast

Joined: Tue Jul 26, 2005 12:02 pm
Posts: 210
Location: Lieusaint (77), France
Thanks team, let's try it...

_________________
Purebasic 5.70 64 bits - Windows 10 Pro 64 bits 1903


Top
 Profile  
Reply with quote  
 Post subject: Re: PureBasic 5.30 is out !
PostPosted: Wed Jul 23, 2014 12:31 pm 
Offline
Administrator
Administrator

Joined: Fri May 17, 2002 4:39 pm
Posts: 13611
Location: France
Zebuddi123 wrote:
Thanks Guys Great Work :)

IDE Title still showing as Beta 9 x64 x86

Zebuddi. :)


It doesn't here anymore (was a small issue), could you try to redownload it ?


Top
 Profile  
Reply with quote  
 Post subject: Re: PureBasic 5.30 is out !
PostPosted: Wed Jul 23, 2014 12:34 pm 
Offline
Addict
Addict

Joined: Tue Nov 13, 2007 12:42 pm
Posts: 1362
Location: Manchester, UK
Thanks Fred!

A generic serializer - in xml AND json! *drools*

This finally fixes a problem of generic communication between 32 bit clients and 64 bit servers! Woohoo!


Top
 Profile  
Reply with quote  
 Post subject: Re: PureBasic 5.30 is out !
PostPosted: Wed Jul 23, 2014 12:36 pm 
Offline
Administrator
Administrator

Joined: Fri May 17, 2002 4:39 pm
Posts: 13611
Location: France
BTW, could some of you test the links for the LTS version on your user account and confirm everything is OK ?


Top
 Profile  
Reply with quote  
 Post subject: Re: PureBasic 5.30 is out !
PostPosted: Wed Jul 23, 2014 12:54 pm 
Offline
Addict
Addict
User avatar

Joined: Thu Jun 07, 2007 3:25 pm
Posts: 3640
Location: Berlin, Germany
Great!
Many thanks for PB 5.30, and also for the interesting information from behind the scenes!

_________________
Please excuse my flawed English. My native language is PureBasic.
Search
RSBasic's backups


Top
 Profile  
Reply with quote  
 Post subject: Re: PureBasic 5.30 is out !
PostPosted: Wed Jul 23, 2014 1:04 pm 
Offline
Addict
Addict

Joined: Tue Nov 13, 2007 12:42 pm
Posts: 1362
Location: Manchester, UK
Fred wrote:
BTW, could some of you test the links for the LTS version on your user account and confirm everything is OK ?

Aye, they all download fine for me.

And the Windows x64 5.22 installs just fine as well.


Top
 Profile  
Reply with quote  
 Post subject: Re: PureBasic 5.30 is out !
PostPosted: Wed Jul 23, 2014 1:08 pm 
Offline
Enthusiast
Enthusiast
User avatar

Joined: Wed Feb 01, 2012 3:30 pm
Posts: 739
Location: Nottinghamshire UK
Thanks Fred Re-downloaded fine now :)

Zebuddi. :D

_________________
malleo, caput, bang. Ego, comprehendunt in tempore


Top
 Profile  
Reply with quote  
 Post subject: Re: PureBasic 5.30 is out !
PostPosted: Wed Jul 23, 2014 1:12 pm 
Offline
Addict
Addict

Joined: Tue Nov 13, 2007 12:42 pm
Posts: 1362
Location: Manchester, UK
Foz wrote:
Fred wrote:
BTW, could some of you test the links for the LTS version on your user account and confirm everything is OK ?

Aye, they all download fine for me.

And the Windows x64 5.22 installs just fine as well.

Slight Problem!

Install the 5.30 x64, and in the uninstall list in Programs & Features, PureBasic 5.30 appears.
Now install 5.22 x64, and then reopen the uninstall list (to refresh it), only PureBasic 5.22 appears, 5.30 has disappeared.

The uninstall programs still work though, so all is not lost.


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 64 posts ]  Go to page 1, 2, 3, 4, 5  Next

All times are UTC + 1 hour


Who is online

Users browsing this forum: No registered users and 4 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  

 


Powered by phpBB © 2008 phpBB Group
subSilver+ theme by Canver Software, sponsor Sanal Modifiye