Page 1 of 23

PureBasic 6.10 LTS is out !

Posted: Fri Dec 22, 2023 6:14 pm
by Fred
Hello everyone !

2024-03-27: Final version is out ! Thanks a lot to everyone for the feedback, we are very proud of this new PureBasic release which paves the way for the future with an up-to-date Windows build chain. Special thanks to Freak who did an awesome job on updating some libraries and provide more consistent commandset accross the supported OS ! A massive work has also been done to fix old bugs and we will continue this way until most of them are squashed. Stay tuned !

2024-03-22: beta 9 is out for testing, it will be hopefully the last beta before final ! It brings the following changes and bug fixes:

Code: Select all

Optimized: SoundVolume() and MusicVolume() changed from integer to float so fractional values are accepted for better precision.
Changed: removed 'link.exe' from the Windows package and went back to 'polink.exe' (link.exe is not freely redistrituable). If 'link.exe' is found on the PATH it will still be used to have a bit smaller executables.
Bugfixes for this version:This list was created automatically. All updated bug threads from the date of the last final version have been determined.

2024-03-13: beta 8 is out for testing ! It brings the following new features and bug fixes:

Code: Select all

Added: New skeleton library create custom skeleton to a mesh
Added: ScaleEntityBone(), MeshDirectAdd() and #PB_Mesh_Direct mode support to CreateMesh()
Added: #PB_2DDrawing_NativeText support for Windows
Optimized: The IDE on Windows is now compiled with the C backend to have faster and smaller executable
Bugfixes for this version:This list was created automatically. All updated bug threads from the date of the last final version have been determined.

2024-03-02: beta 7 is ready to test with even more bug fixes and some new stuff:

Code: Select all

Added: #PB_2DDrawing_NativeText support for DrawingMode()
Added: #PB_PixelFormat_NoAlpha for DrawingBufferFormat()
Added: ExamineDraggedItems(), NextDraggedItem() and DraggedItemIndex() for Drag'n'drop
Added: GetGadgetItemText() support for ExplorerTreeGadget() 
Bugfixes for this version:This list was created automatically. All updated bug threads from the date of the last final version have been determined.

2024-02-10: beta 6 is out ! Mostly a bug fix release, with some addition for the WebViewGadget() and WebGadget() on Windows

Code: Select all

Added: #PB_WebView_ICoreController attribute support WebGaget() and WebViewGadget()
Added: All ICoreWebView2 interfaces and constants as residents, thanks to Justin (Windows)
Bugfixes for this version:This list was created automatically. All updated bug threads from the date of the last final version have been determined.


2024-02-04: beta 5 is ready to test. It mainly brings a new DPI Aware mode for OS X (the IDE tabs on OS X shouldn't be blurry anymore on retina display, yeah !) and the usual bugs fixes. Don't hesitate to test it and we are close to the final release.

Code: Select all

Added: DPI-Aware support for OS X
Added: GetGadgetFont(#PB_Default) support on OSX to get the system gadget font 
Added: Documentation is up-to-date now for all new commands (english only)
2024-01-27: beta 4 is out don't hesitate to test it ! Changes:

Code: Select all

Added: #PB_WebView_Debug flag to WebViewGadget() to enable debugging
Added: most of the new english documentation

Renamed: WebViewEvaluateScript() to WebViewExecuteScript()

Removed: Some very old deprecated functions.
Bugfixes for this version:This list was created automatically. All updated bug threads from the date of the last final version have been determined.



2024-01-19: beta 3 released, focused on bug fixes and improvements:

Code: Select all

Added: NbMaxChannels parameter for InitSound(). Range from 1 to 254.

Changed: WebViewGadget(): SetGadgetText() now open an URI like WebGadget() and added SetGadgetItemText() with #PB_Web_HtmlCode

Updated: Switched for MiniAudio for Windows as well, so all platform should behave exactly the same now. It use WASAPI on Windows by default for best sound quality.
Updated: Reworked the Music library to use MiniAudio as backend.
Updated: SQLite version to 3.45.0
Bugfixes for this version:This list was created automatically. All updated bug threads from the date of the last final version have been determined.

2024-01-12: beta 2 released, focused on bug fixes and improvements:

Code: Select all

Added: UseDialogWebGadget() to avoid WebGadget dependencies by default when using dialogs.

Updated: Unicode file support for Windows compiler
Updated: Used libvlc instead of the old xine lib on Linux to play movies
Updated: Reworked the Sound library to use MiniAudio on OS X and Linux (SDL dependency is no more requiered for sounds on Linux).
Bugfixes for this version:This list was created automatically. All updated bug threads from the date of the last final version have been determined.



We were hard at work to be able to release this new beta of PureBasic so you could play with it during Xmas if you have some holidays 8). It was meant to be a medium sized release, but Fr34k decided to weight in and added a lot of commands, so it's now officially a big release ! Check for yourself:

Code: Select all

Added: WebViewGadget(), BindWebViewCallback(), UnbindWebViewCallback(), WebViewEvaluateScript() (Windows, OSX, GTK3)
Added: CompareStructure(), CompareArray(), CompareList() and CompareMap() functions
Added: CustomSortList() and CustomSortArray() functions to Sort library
Added: CatchPack(), PackEntryDate()
Added: #PB_Cipher_HMAC flag to fingerprint functions
Added: CreatePasswordHash() and VerifyPasswordHash() functions (BCrypt algorithm)
Added: DeriveCipherKey() to create a cipher key from a password (PBKDF2 algorithm)
Added: SvgVectorOutput() for all OS
Added: PdfVectorOutput() for all OS
Added: DateUTC() to get the date in UTC time
Added: ConvertDate(Date, #PB_Date_LocalTime/#PB_Date_UTC) to convert the date between UTC and localtime
Added: AddPackDirectory(#Packer, PackedDirectoryName$) for empty directory
Added: UseDialogOpenGLGadget() to avoid opengl dependencies by default when using dialogs.
Added: UseDialogScintillaGadget() to avoid big lib dependency by default when using dialogs.
Added: Case-insensitive subsystem support on Linux
Added: 'Encoding' optional parameter to OpenPreference() to handle properly UTF-8 files without BOM
Added: '#PB_Preference_NoBOM' flags for CreatePreference() to create UTF-8 preference files without BOM
Added: --listfunctions/constants/interfaces and --querystructure support to Windows compiler.
Added: #PB_EventType_ColumnClick for ListIconGadget()
Added: #PB_String_EscapeJSON support to EscapeString() and UnescapeString().
Added: Parent window support to all requesters
Added: runtime warning if CreateThread() is used without ThreadSafe mode
Added: #PB_EventType_Refresh support for ExplorerListGadget() (Window only)
Added: GadgetItemID() support for PanelGadget() (Windows only)
Added: WebGadget based on Edge component with the #PB_Web_Edge constant (Windows only)
Added: localhost binding for InitFastCGI()
Added: SystrayIconMenu() to automatically display a menu when clicking on the icon
Added: ListIconGaget() column alignment support

Updated: Toolchain on Windows now use VisualStudio 2022 and new MSVCRT for faster PureBasic programs and easier external libs integration.
Updated: Date library for full 64bit support (new range is year 1601 to 9999)
Updated: Minimum version for Linux x86 is now Debian 12
Updated: Minimum version for Raspberry is now Debian 12 based PI OS

Changed: Scintilla is now linked statically on Windows (distributing the scintilla.dll along your executable isn't needed anymore)
Changed: the SysTray lib on Linux now use AppIndicator to support modern Linux distro in GTK3
Changed: deprecated DESFingerprint() function - use the new CreatePasswordHash() instead.

Removed: --listpath on Linux/OSX (now use --output to specify the output file)
Removed: Windows XP support. Minimum supported version is now Windows Vista.
As planed, we dropped the Windows XP support so we can now easily include cutting edge libraries like WebView and remove a lot of patches all accross the code base. Here is a small WebView example to get you started.

Code: Select all

  
Html$ =  ~"<button id=\"increment\">Tap me</button>\n"+
~"<div>You tapped <span id=\"count\">0</span> time(s).</div>\n"+
~"<button id=\"compute\">Compute</button>\n"+
~"<div>Result of computation: <span id=\"compute-result\">0</span></div>\n"+
~"<script>\n"+
~"  const [incrementElement, countElement, computeElement, "+
~"computeResultElement] =\n"+
~"    document.querySelectorAll(\"#increment, #count, #compute, "+
~"#compute-result\");\n"+
~"  document.addEventListener(\"DOMContentLoaded\", () => {\n"+
~"    incrementElement.addEventListener(\"click\", () => {\n"+
~"      window.increment().then(result => {\n"+
~"        countElement.textContent = result.count;\n"+
~"      });\n"+
~"    });\n"+
~"    computeElement.addEventListener(\"click\", () => {\n"+
~"      computeElement.disabled = true;\n"+
~"      window.compute(6, 7).then(result => {\n"+
~"        computeResultElement.textContent = result;\n"+
~"        computeElement.disabled = false;\n"+
~"      });\n"+
~"    });\n"+
~"  });\n"+
~"</script>";
    

Procedure IncrementJS(Json$)
  Static i
  Debug "IncrementJS "+Json$
  i+1
  ProcedureReturn UTF8(~"{ \"count\": "+Str(i)+ "}")
EndProcedure


Procedure ComputeJS(Json$)
  Debug "ComputeJS "+Json$
  ProcedureReturn UTF8(~"150")
EndProcedure


OpenWindow(0, 100, 100, 400, 400, "Hello", #PB_Window_SystemMenu)

WebViewGadget(0, 0, 0, 400, 400)
SetGadgetText(0, Html$)
  
BindWebViewCallback(0, "increment", @IncrementJS())
BindWebViewCallback(0, "compute", @ComputeJS())

Repeat 
  Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
More examples for new functions can be found here:
https://www.purebasic.fr/english/viewto ... 71#p613171

Have Fun !

The Fantaisie Software Team

Re: PureBasic 6.10 beta 1 - Xmas Release - is out !

Posted: Fri Dec 22, 2023 6:32 pm
by normeus
Thank YOU!!!
[edit] I dislike xmas, but being the first post today, allowed me to let you guys know, There is a PAYPAL Button which you can click and donate to the PureBasic team! :D
I believe in Santa now! :D [/edit]

Re: PureBasic 6.10 beta 1 - Xmas Release - is out !

Posted: Fri Dec 22, 2023 6:37 pm
by skywalk
Merry Christmas!

This beats many of my gifts!

Re: PureBasic 6.10 beta 1 - Xmas Release - is out !

Posted: Fri Dec 22, 2023 6:42 pm
by Oso
Merry Christmas Fred and colleagues. And thank you to all in the team for your dedication. It's great to see PureBasic forging ahead with features like these. :wink:

Re: PureBasic 6.10 beta 1 - Xmas Release - is out !

Posted: Fri Dec 22, 2023 6:47 pm
by J. Baker
Thanks and Merry Christmas! :D

Re: PureBasic 6.10 beta 1 - Xmas Release - is out !

Posted: Fri Dec 22, 2023 6:49 pm
by useful
It's time to rename yourself to magic software :D

Re: PureBasic 6.10 beta 1 - Xmas Release - is out !

Posted: Fri Dec 22, 2023 6:55 pm
by the.weavster
Image

Re: PureBasic 6.10 beta 1 - Xmas Release - is out !

Posted: Fri Dec 22, 2023 7:14 pm
by Quin
Thanks so much Fred and team, and merry Christmas!

Re: PureBasic 6.10 beta 1 - Xmas Release - is out !

Posted: Fri Dec 22, 2023 7:17 pm
by GG
Merry Xmas to the community, and thanks Fantaisie Software for this beta !

Re: PureBasic 6.10 beta 1 - Xmas Release - is out !

Posted: Fri Dec 22, 2023 7:20 pm
by Bitblazer
Thanks for the beta and all your work and happy celebrations to all.

Re: PureBasic 6.10 beta 1 - Xmas Release - is out !

Posted: Fri Dec 22, 2023 7:21 pm
by Mijikai
@Fred and Team
Thank you & Happy Holidays :D

Re: PureBasic 6.10 beta 1 - Xmas Release - is out !

Posted: Fri Dec 22, 2023 7:26 pm
by the.weavster
Your WebViewGadget demo above on MX Linux ...

I'm getting Invalid Memory Access on the line:

Code: Select all

BindWebViewCallback(0, "increment", @IncrementJS())
:(

I seem to have all the dependencies listed in the INSTALL script. ( I also have my own wrapper for WebView compiled as libwebview.so on the same PC and that works so I don't think it's a missing dependency ).

Re: PureBasic 6.10 beta 1 - Xmas Release - is out !

Posted: Fri Dec 22, 2023 7:31 pm
by Kiffi
Fred wrote: Fri Dec 22, 2023 6:14 pm

Code: Select all

...
WebViewGadget(0, 0, 0, 400, 400)
SetGadgetText(0, Html$)
...
In my opinion, the SetGadgetText() command has been mixed up here(?):

SetGadgetText() -> change the current URL.
SetGadgetItemText() -> Change the html code in the gadget with #PB_Web_HtmlCode as 'Item'.

Re: PureBasic 6.10 beta 1 - Xmas Release - is out !

Posted: Fri Dec 22, 2023 7:49 pm
by STARGÅTE
Many thanks Fred. I'm very happy about the new functions. CustomSortList() :shock: .
However, did I something wrong or are there no documentations for the new function in the beta version?

Re: PureBasic 6.10 beta 1 - Xmas Release - is out !

Posted: Fri Dec 22, 2023 7:51 pm
by RASHAD
If that version 6.10
I wonder what version 7.0 will be :D