PureBasic 5.30 beta 9 released!

Developed or developing a new product in PureBasic? Tell the world about it.
freak
PureBasic Team
PureBasic Team
Posts: 5835
Joined: Fri Apr 25, 2003 5:21 pm
Location: Germany

PureBasic 5.30 beta 9 released!

Post by freak »

Hello everybody,

As the beta 8 was broken for Linux x86 users, here is a quick new beta 9. The doc should be up to date in the 3 languages :)

Beta 8 is out, it's only a bug fix release.

Beta 7 is available, it's only a bug fix release. It's probably the last beta, as most remaining issues are now sorted out, so it's time to jump and see if everything is OK ! :)

Beta 6 is available, it's only a bug fix release. Don't hesitate to test the bugs maked as done to confirm the bug is really gone. Thanks !

Beta 5 is available and should solve issues, mainly with the IDE x64. A new constant has been introduced:

Code: Select all

#PB_Explorer_HiddenFiles - To show hidden files in the explorer gadgets
Beta 4 is available and should solve issues marked as [Done]. Don't hesitate to test it, we believe it's now stable enough for serious work, so we can get a stable final version.

Beta 3 is available and should solve IDE issues, and brings the following new flags for the OpenGLGadget():

Code: Select all

#PB_OpenGL_NoFlipSynchronization
#PB_OpenGL_FlipSynchronization
#PB_OpenGL_NoDepthBuffer
#PB_OpenGL_16BitDepthBuffer
#PB_OpenGL_24BitDepthBuffer
#PB_OpenGL_NoStencilBuffer
#PB_OpenGL_8BitStencilBuffer
#PB_OpenGL_NoAccumulationBuffer
#PB_OpenGL_32BitAccumulationBuffer
#PB_OpenGL_64BitAccumulationBuffer
Beta 2 is available and should solve the OSX issue, and some other small bugs

the first public beta version of the upcoming PureBasic version is available for download on your download account.

Some notable new features include:
  • A new JSON library including functions to serialize complex data structures directly from PB code to JSON and back. The same functionality has also been added to the XML library.
  • New functions for the 3D engine.
  • The IDE and debugger are now full unicode programs
  • Improvements for the IDE such as a "plain-text" editing mode, the highlighting of repeated occurrences of the current selection, a new 'Issues' tool to track TODOs in the source code and more.
  • A new /PREPROCESS compiler flag which will generate a PB code with all compiler directives and macros resolved.
  • ... and much more!
The english documentation is already up to date for the new features, so you can find a description and examples there.

This version also includes some changes that may break compatibility with existing code:
  • The (X)IncludeFile and IncludeBinary have changed their behavior for relative paths.
  • The #PB_Event_SizeWindow and #PB_Event_MoveWindow events are no longer reported in realtime in the main event loop. This is to reduce problems with flickering on resize. To get realtime events you have to use the BindEvent() function and a callback in the future.
  • CreateXMLNode() has a new mandatory parameter.
This is regular release which means it brings new features and will have the regular support cycle. The 5.2x LTS release will continue to be maintained and a 5.23 LTS release is planned for shortly after this release becomes final.

As usual, please test the beta release(s) as much as you can and report any problems you have so we can have a stable final release. Please pay particular attention to problems/weird behavior in the IDE since converting it into a unicode application was quite a big change.

Here is the full list of changes:

Code: Select all

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 ande 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 WindowsBound() 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 writting the ending null character
Added: #PB_Enumeration support for Defined()
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 with this version, and please report all problems in the bugs forum.

The PureBasic Team
Fred
Administrator
Administrator
Posts: 14412
Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:

Re: PureBasic 5.30 beta 1 released!

Post by Fred »

Sounds cool ! ;)
freak
PureBasic Team
PureBasic Team
Posts: 5835
Joined: Fri Apr 25, 2003 5:21 pm
Location: Germany

Re: PureBasic 5.30 beta 1 released!

Post by freak »

Here is a little demonstration of how easy it is with the new JSON library to serialize data:

Code: Select all

Structure Person
  FirstName$
  LastName$
  Age.l
  List Books.s()
EndStructure

NewList Persons.Person()

AddElement(Persons())
Persons()\FirstName$ = "John"
Persons()\LastName$  = "Smith"
Persons()\Age        = 42
AddElement(Persons()\Books()): Persons()\Books() = "Investing For Dummies"
AddElement(Persons()\Books()): Persons()\Books() = "English Grammar For Dummies"
AddElement(Persons()\Books()): Persons()\Books() = "A Little Bit of Everything For Dummies"

AddElement(Persons())
Persons()\FirstName$ = "Jane"
Persons()\LastName$  = "Smith"
Persons()\Age        = 40
AddElement(Persons()\Books()): Persons()\Books() = "A Million Random Digits with 100,000 Normal Deviates"

; This is all the JSON magic!
CreateJSON(0)
InsertJSONList(JSONValue(0), Persons())
Debug ComposeJSON(0, #PB_JSON_PrettyPrint)
... and the other way around...

Code: Select all

Dim Numbers.l(0)

; This is the magic!
ParseJSON(1, "[2, 4, 6, 8, 10, 12]")
Debug JSONArraySize(JSONValue(1))
ExtractJSONArray(JSONValue(1), Numbers())

For i = 0 To ArraySize(Numbers())
  Debug Numbers(i)
Next i
quidquid Latine dictum sit altum videtur
User avatar
STARGÅTE
Addict
Addict
Posts: 1614
Joined: Thu Jan 10, 2008 1:30 pm
Location: Germany, Glienicke
Contact:

Re: PureBasic 5.30 beta 1 released!

Post by STARGÅTE »

Thank You :)

Edit:
What is AllocateStructure()?
Same as AllocateMemory() + InitializeStructure() ?
PB 5.73 ― Win 10, 20H2 ― Ryzen 9 3900X ― Radeon RX 5600 XT ITX ― Vivaldi 4.0 ― www.unionbytes.de
Lizard - Script language for symbolic calculations and moreTypeface - Sprite-based font include/module
Fred
Administrator
Administrator
Posts: 14412
Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:

Re: PureBasic 5.30 beta 1 released!

Post by Fred »

Yes, that's it. And FreeStructure() is like ClearStructure() : FreeMemory(). The good thing is it's type enforced by the compiler.
User avatar
skywalk
Addict
Addict
Posts: 3554
Joined: Wed Dec 23, 2009 10:14 pm
Location: Boston, MA

Re: PureBasic 5.30 beta 1 released!

Post by skywalk »

Wow :!: So many goodies :mrgreen:
Can't wait to try "pbcompiler /preprocess /commented"

Does the manual also explain the new #PB_Event_SizeWindow and #PB_Event_MoveWindow behaviors?
That definitely breaks many of my apps.
My EventProcessor() selects on:
#PB_Event_MoveWindow
#PB_Event_SizeWindow
#PB_Event_Timer
#PB_Event_Gadget
#PB_Event_Menu
#PB_Event_CloseWindow
...
The nice thing about standards is there are so many to choose from. ~ Andrew Tanenbaum
User avatar
djes
Addict
Addict
Posts: 1806
Joined: Sat Feb 19, 2005 2:46 pm
Location: Pas-de-Calais, France

Re: PureBasic 5.30 beta 1 released!

Post by djes »

Great, thanx for the good job ! :D
User avatar
STARGÅTE
Addict
Addict
Posts: 1614
Joined: Thu Jan 10, 2008 1:30 pm
Location: Germany, Glienicke
Contact:

Re: PureBasic 5.30 beta 1 released!

Post by STARGÅTE »

The (X)IncludeFile and IncludeBinary have changed their behavior for relative paths.
Hm, but now I have some problems:
IncludePath doesn't work local on the file.

Main file:
IncludePath "Includes"
XIncludeFile "Somethink.pbi"

Somethink.pbi:
XIncludeFile "SomeMore.pbi" ; Include more files from the Includes-Folder

Until PB 5.22 the Include-Path was the main file path + InlcudePath, so:
"MainPath\Includes\SomeMore.pbi"

Now it is local, but IncludePath in main file is global to all files, so i get this wrong path
"MainPath\Includes\Includes\SomeMore.pbi"

How can i Fix this problem?
Or, can you change the working area of IncludePath?
Last edited by STARGÅTE on Fri May 30, 2014 5:00 pm, edited 1 time in total.
PB 5.73 ― Win 10, 20H2 ― Ryzen 9 3900X ― Radeon RX 5600 XT ITX ― Vivaldi 4.0 ― www.unionbytes.de
Lizard - Script language for symbolic calculations and moreTypeface - Sprite-based font include/module
User avatar
luis
Addict
Addict
Posts: 3715
Joined: Wed Aug 31, 2005 11:09 pm
Location: Italy
Contact:

Re: PureBasic 5.30 beta 1 released!

Post by luis »

A new /PREPROCESS compiler flag which will generate a PB code with all compiler directives and macros resolved.
ORGASM ! Image
The (X)IncludeFile and IncludeBinary have changed their behavior for relative paths.
Ohhhhh.... finally! Another good one !

And the serializer too... a lot of interesting stuff.

Thanks. :wink:
Fred
Administrator
Administrator
Posts: 14412
Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:

Re: PureBasic 5.30 beta 1 released!

Post by Fred »

STARGÅTE wrote:
The (X)IncludeFile and IncludeBinary have changed their behavior for relative paths.
Hm, but now I have some problems:
IncludePath doesn't work local on the file.

Main file:
IncludePath "Includes"
XIncludeFile "Somethink.pbi"

Somethink.pbi:
XIncludeFile "SomeMore.pbi" ; Include more files from the Includes-Folder

Until PB 5.22 the Include-Path was the main file path + InlcudePath, so:
"MainPath\Includes\SomeMore.pbi"

Now it is local, but IncludePath in main file is global to all files, so i get this wrong path
"MainPath\Includes\Includes\SomeMore.pbi"

How can i Fix this problem?
Or, can you change the working area of IncludePath?
I think you are right, it should have an effect only in the active file. Could you report it as bug ?
User avatar
J. Baker
Addict
Addict
Posts: 2123
Joined: Sun Apr 27, 2003 8:12 am
Location: USA
Contact:

Re: PureBasic 5.30 beta 1 released!

Post by J. Baker »

Thanks for the update! ;)
Last edited by J. Baker on Fri May 30, 2014 6:46 pm, edited 1 time in total.
www.posemotion.com

PureBasic Tools for OS X: PureMonitor, plist Tool, Data Maker & App Chef

Mac: 10.13.6 / 1.4GHz Core 2 Duo / 2GB DDR3 / Nvidia 320M
PC: Win 7 / AMD 64 4000+ / 3GB DDR / Nvidia 720GT


Even the vine knows it surroundings but the man with eyes does not.
User avatar
kenmo
Addict
Addict
Posts: 1922
Joined: Tue Dec 23, 2003 3:54 am

Re: PureBasic 5.30 beta 1 released!

Post by kenmo »

Update looks great! I guess the JSON module I wrote last month is no longer needed :)
User avatar
Samuel
Enthusiast
Enthusiast
Posts: 751
Joined: Sun Jul 29, 2012 10:33 pm
Location: United States

Re: PureBasic 5.30 beta 1 released!

Post by Samuel »

Very nice! :D I'll be busy this weekend experimenting with the new features.
said
Enthusiast
Enthusiast
Posts: 342
Joined: Thu Apr 14, 2011 6:07 pm

Re: PureBasic 5.30 beta 1 released!

Post by said »

:lol: :lol: :lol: :lol: :lol: :lol: THANK YOU 8)
User avatar
oreopa
Enthusiast
Enthusiast
Posts: 279
Joined: Sat Jun 24, 2006 3:29 am
Location: Edinburgh, Scotland.

Re: PureBasic 5.30 beta 1 released!

Post by oreopa »

Thx team!

My main project highly relies on #PB_Event_SizeWindow event, so let's see what happens ;) Issues tool sounds great :D Let's go! :mrgreen:
Proud supporter of PB! * Musician * C64/6502 Freak
Post Reply