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.
- Windows: [Done] SetDropCallback(@tree_OnDrop())
- Windows: [Done] mod sounds not working 6.10b6
- Windows: [Done] 6.10 b8 Edge WebGadget scroll position reset
- Windows: [Done] Text not longer readable in form PB6.10 b8
- MacOS: [Done] ListView/Editor/Text: SetGadgetFont(Gadget, #PB_Default) don't reset the line height / font size
- IDE: [Done] No Autocomplete Popup
- IDE: [Done] PB v6.10 - PB-IDE Dialogs Gadget Positions on Raspberry
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
- Windows: [Done] pb 6.10b5 x86 - engine3d initialization
- Windows: [Done] Icon in tray disappears after restart of the explorer
- Windows: [Done] Macro and constant
- Linux: [Done] libappindicator3-dev not compatible with other apps on Ubuntu 22
- MacOS: [Done] PB 6.10 b7 - Drag & Drop
- MacOS: [Done] Example "WindowedScreen.pb" shows a black window only
- MacOS: [Done] ListView/Editor/Text: SetGadgetFont(Gadget, #PB_Default) don't reset the line height / font size
- MacOS: [Done] Problems with redrawing text
- C Backend: [Done] C backend throws assembler error when a variable is declared with an empty structure
- C Backend: [Done] PB 6, C-backend - XOr with pointers
- IDE: [Done] AutoComplete List is sometimes delayed
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()
- Windows: [Done] StringGadget fails to be created if text is >65K
- Windows: [Done] PB6.03 LTS (x64,ASM) - bug with #PB_Compiler_IsMainFile and CompilerCase
- Windows: [Done] 6.04 path bug on WinXP
- Windows: [Done] PB6.10 B1: Image size parameters of DrawVectorImage() are ignored with SvgVectorOutput()
- Windows: [Done] IMA error on redim array
- Windows: [Done] v610b6 ASM does not flag out of bound array().
- Windows: [Done] PB ASM backend - Wrong FPU comparison result when adding one more procedure definition
- Windows: [Done] CompilerIf BUG or NOT ?
- Windows: [Done] Duplicated library command: Abs() (in libraries Math and Math).
- Windows: [Done] 6.10 b6 PORC error when CJK characters in a icon path
- Windows: [Done] PB6.04/PB6.10 Dialog grouped OptionGadgets
- Windows: [Done] ExaminePreferenceKeys() returns empty keys in endless loop
- Windows: [Done] PB6.10 #PB_Web_Edge and dialogs
- Windows: [Done] PB 6.10 Beta 6 Window won't close from taskbar
- Windows: [Done] PB6.10beta6 New pop-up menu on Virtual vertical scroll gadget does nothing
- Windows: [Done] 6.10 Beta 6 SetGadgetItemAttribute() with #PB_ListIcon_ColumnAlignment
- Windows: [Done] Sound Loop with 6.10 Beta 6
- Windows: [Done] Dialog requires UseScintillaGadget()
- Windows: [Done] DrawText on Image / Canvasgadget too bold
- Windows: [Done] 6.10 Beta: Streaming sounds looped only plays the sound once.
- Windows: [Done] PB 6.10 Beta 5 - Stack overflow in CompareStructure with #PB_Memory_FollowPointers and circular pointer paths
- Linux: [Done] - PB6.00 LTS - Set/GetClipboardText() not working
- Linux: [Done] Cyrillic in debugger lines
- Linux: [Done] PB 5.60 GadgetWidth on DateGadget returns wrong width
- Linux: [Done] PB 6.03 Beta 3 GTK Shortcut with ID=0 not triggered
- Linux: [Done] SetGadgetAttribute-Canvas, Button_Image_32Bit_Crash 573 Mint
- Linux: [Done] PB 4.60beta3 standalone debugger source positioning broken
- Linux: [Done] 4.50 b3 MovieStatus always returns 1
- Linux: [Done] 4.50 b3 MovieSeek() seems to do nothing..
- Linux: [Done] SDL+OpenGL or Screen+OGRE and Debbuger BUG
- Linux: [Done] 5.40 beta 7 StopDrawing() invalid mem access
- Linux: [Done] PB5.40B1-3 SetGadgetColor(,#PB_Gadget_BackColor,) fails
- Linux: [Done] PB5.61 Ubuntu 17.10 x64 GUI all damaged
- Linux: [Done] Gtk-CRITICAL **
- Linux: [Done] 5.40 beta 8 x64 Bug in ListIconGadget
- Linux: [Done] PB5.40-5.42 - Drag&Drop problem
- Linux: [Done] PB v6.10b5 - CompareStructure Linker Error
- Linux: [Done] PB v6.10 - SysTrayIcon linker error
- MacOS: [Done] PB6.10 DPI-aware CanvasGadget
- MacOS: [Done] M1 6.0 Odd behavior with ImageCallback
- MacOS: [Done] Please fix drag'n-drop on OSX
- MacOS: [Done] GetGadgetItemText() doesn't work with wrapped text in EditorGadget
- MacOS: [Done] PB4.61b1 - Drag'n'Drop support for ListIcon/Listview missing
- MacOS: [Done] 4.41RC1 Drag & Drop from ListView inside a Frame 3D
- MacOS: [Done] 6.03b 8 compiler lock up
- MacOS: [Done] 5.20 beta 20 - Dialog, ColorRequester and Threaded mode
- MacOS: [Done] CreateSprite(..._AlphaBlending) different results mac/win
- MacOS: [Done] DrawingMode(#PB_2DDrawing_XOr)
- MacOS: [Done] Import asm errno - linker wrong version (purebasic.o?)
- MacOS: [Done] Drawing on window is not working
- MacOS: [Done] WindowVectorOutput
- MacOS: [Done] ClipOutput fails, and Canvas doesnt react to Shift,Ctrl keys
- MacOS: [Done] ClipOutput Bug PB573
- MacOS: [Done] 5.72 b1 Image problem - #PB_Image_Transparent
- MacOS: [Done] Alpha
- MacOS: [Done] PB 5.11 - WindowedScreen larger then Window
- MacOS: [Done] CanvasOutput and Alpha
- MacOS: [Done] Purebasic 6.01 lts, using startDrawing(screenOutput())
- MacOS: [Done] OpenWindowedScreen(…) yields incorrect scaling and positioning until window is resized
- MacOS: [Done] GradientColor with DrawText works not
- MacOS: [Done] PB4.60 RC1 - TextWidth and italic
- MacOS: [Done] Language of Requester
- MacOS: [Done] Problems with redrawing text
- MacOS: [Done] DrawText() has no alphachannel
- MacOS: [Done] 5.22b2 - XOR DrawText() does not work on MacOS
- MacOS: [Done] 5.22b2 - AlphaBlend DrawText() does not work on MacOS
- MacOS: [Done] 5.20B16: Wrong positioning of sprites in WindowedScreen
- MacOS: [Done] PB 5.11 - MouseLocate Jumps
- MacOS: [Done] 4.61b2 - ReleaseMouse()
- MacOS: [Done] KeyboardInkey() returns pushed and released key
- MacOS: [Done] PB5.60 Date gadget doesn't function correctly on OSX...
- MacOS: [Done] Rotated Sprite Bug
- MacOS: [Done] 5.73 LTS - KeyboardInkey() doesn't support capital letters
- MacOS: [Done] mac64/pb5.72 - Import and Adress to a imported function
- MacOS: [Done] Import external variable
- MacOS: [Done] Can't use Runtime in shared library
- Doc: [Done] InitSound
- Doc: [Done] Base64Encoder()
- Doc: [Done] ReadString
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)
- Windows: [Done] PB 6.10: WASAPI prevents machine from automatically sleeping.
- Windows: [Done] Works in C Backend and fails in Assembler x86 backend
- Windows: [Done] IPv6 and UDP no client data event PB 6.04
- Windows: [Done] [PB 6.10 beta 4] ConvertDate()
- Windows: [Done] PB 6.10b5 OpenWindow() with x,y #PB_Ignore is positioned incorrectly.
- Windows: [Done] PB 6.1 beta 4 - Right click on Systray causes crash, Left does not trigger event
- Windows: [Done] [PB 6.10 beta 4] Date() and leap years
- Windows: [Done] Project with C Backend lost when installing a new PB version
- Windows: [Done] PB 6.04 #PB_HTTP_Aborted never happens on asynchronous ReceiveHTTPFile
- Windows: [Done] PB 6.10 beta 4 - OpenPreferences()
- Linux: [Done] 5.73b2 Wrong parsing of floating point numbers
- Linux: [Done] gtk_progress_bar_pulse: assertion 'GTK_IS_PROGRESS_BAR (pbar)' failed
- Linux: [Done] IPv6 and UDP no server data event PB 6.04
- Linux: [Done] CloseNetworkConnection()
- Linux: [Done] PB 6.04 x64 #PB_Window_Normal not working
- Linux: [Done] Invalid Memory Access Error ASM Backend
- Linux: [Done] PB v6.10 - SysTrayIcon linker error
- Linux: [Done] RegisterFontFile(), DrawFont(), StartDrawing()
- Linux: [Done] PB v6.10b5 - CompareStructure Linker Error
- MacOS: [Done] 6.10 b1 - Changing the column width with mouse triggers a header click
- MacOS: [Done] 6.10 b3 ComboBoxGadget - incorrect value with BindGadgetEvent
- MacOS: [Done] 6.10 b1 - ExamineEnvironmentVariables() fails
- MacOS: [Done] Retina-Display Problems
- MacOS: [Done] PB 5.51 CanvasGadget on Retina Display
- C Backend: [Done] PB 6.03 LTS - C backend] Array index out of bounds!
- C Backend: [Done] Static arrays inside structures bug
- IDE: [Done] PB v6.10b5 - Missing Constants
- IDE: [Done] PB6.10B5 Background color for found word while "replacing" task
- IDE: [Done] SendMessage #SCI_CALLTIPSHOW need UTF8 now
- IDE: [Done] PB 6.10 beta 4 Reload an empty text file doesn't work.
- Doc: [Done] Labels in Procedures
- Doc: [Done] CustomSortList - Wrong description text (copy past from CustomSortArray)
- Doc: [Done] [PB 6.10 beta 4] ConvertDate()
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)
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.
- Windows: [Done] Invalid memory access when attempting to load a mono FLAC file
- Windows: [Done] invalid memory access with playing mono flac files
- Windows: [Done] bug about Includes Functions
- Windows: [Done] 4.30 IncludeFile and UTF-8
- Windows: [Done] 4.20 beta 2: IDE / Debugger swallows my special character
- Windows: [Done] ExplorerListGadget Change Pattern
- Windows: [Done] PB v6.03 LTS and v6.10: Debugger Output Bug (All OS)
- Windows: [Done] 6.10 b3 WebViewGadget has the same GadgetType as WebGadget
- Windows: [Done] PB 6.10 b1 - temporary folders are not deleted
- Linux: [Done] WebGadget library crash
- MacOS: [Done] 6.10 #PB_Compiler_Date returns UTC-Time on macOS
- MacOS: [Done] Mac OS X 4.20&4.30A1 - Sound Frequency
- C Backend: [Done] PB6.10b1 Console + ASLR = not a valid Win32 application
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
- Windows: [Done] 6.04bug:If there is no path operation after opening
- Windows: [Done] Can't Include file with path with accent [PB 6.03Beta4]
- Windows: [Done] 'ß' char in pathnames with unicode compile -> file not found
- Windows: [Done] OGG stream, sound library (IMA's and fails)
- Windows: [Done] multiple instances of the same sound file or memory cause aliasing/downsampling
- Windows: [Done] 5.10 b1 ResumeSound doesn't work w/ Streaming
- Windows: [Done] InitSound() returns 0 but ogg/wav files can be hear.
- Windows: [Done] InitSound is failing if called after OpenWindowedScreen
- Windows: [Done] PB 6.10 b1 - temporary folders are not deleted
- Windows: [Done] Bugs in Dialog (expand = equal)
- Windows: [Done] JSON format to represent numbers with double precision
- Windows: [Done] PB6.10b2 string error
- Windows: [Done] 4.30 IncludeFile and UTF-8
- Windows: [Done] PB 6.03 LTS German umlauts not shown in error message
- Windows: [Done] PureBasic 6.04 ResizeImage (#PB_Ignore)
- Windows: [Done]6.10 B1 InputRequester display
- Windows: [Done] PB 6.10 beta 1 Error with invisible window and Webgadet
- Windows: [Done] PB6.10B1 Webgadget Problems (Edge Mode)
- Windows: [Done] fatal error LNK1171 PB 6.10 beta 1 x64
- Windows: [Done] pb 6.10 b1 link error msvcrt.lib not found
- Windows: [Done] [PB 6.10 beta 1] PdfVectorOutput() and MovePathCursor()
- Windows: [Done] PdfVectorOutput doesn't support unicode
- Windows: [Done] [PB 6.10 beta 1] AddDate(d, #PB_Date_Month, -1)
- MacOS: [Done] 6.10 b1 - All new constants missing
- IDE: [Done] PB610b2 - Compilation issue with path with ASCII>127 characters
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).
- Windows: [Done] PB6.10 B1: using FillVectorOutput() creates malformed SVG with SvgVectorOutput()
- Windows: [Done] PB 6.10 b1 - PdfVectorOutput
- Windows: [Done] [6.10 B1] Random CalendarGadget dates are bold
- Windows: [Done] [6.10 beta 1] FormatDate() and ParseDate()
- Windows: [Done] [PB 6.10 beta 1] AddDate(d, #PB_Date_Month, -1)
- Linux: [Done] OpenGL inside SplitterGadget = BadDrawable error
- Linux: [Done] OpenGLGadget() + SplitterGadget() ?
- Linux: [Done] 4.0 b2 and now 4.10b2 Linux - PlayMovie is not working
- Linux: [Done] ListIconGadget: OS-different column order after drag&drop
- Linux: [Done] x64 call convention parsing bug
- Linux: [Done] IncludeBinary filenames with umlauts or Unicode characters > U+00A0
- Linux: [Done] solved audio playback stream never closes.
- Linux: [Done] 4.20b - PlayMovie() issue .. the (old) Problem
- Linux: [Done] 440b2 x64 movie-lib Playmovie crashes
- Linux: [Done] .wav files play too fast - PB 5.22 x86 x64
- Linux: [Done] Requester - GtkDialog mapped without a transient parent.
- Linux: [Done] PB 5.41 LTS All Requesters report warnings
- Linux: [Done] PB v6.10 b1 - BindWebViewCallback()
- MacOS: [Done] 6.10 b1 - ListIconGadget: Changed definition of column width?
- MacOS: [Done] panning and setting/getting frequency of sound not working
- MacOS: [Done] GetSoundPosition returns -1
- MacOS: [Done] Scratching noises when 2 or more sounds are played together
- MacOS: [Done] SetSoundFrequency
- MacOS: [Done] 5.00 - PlaySound streams mono incorrectly
- MacOS: [Done] OGG files sound wrong.
- MacOS: [Done] 5.00 - PlaySound with wrong "speed"
- MacOS: [Done] SetGadgetItemColor don't work
- MacOS: [Done] Bugs in SetGadgetItemColor() in PB 6+
- MacOS: [Done] 6.10 b1 - SetGadgetItemColor: FrontColor has no effect with ListIconGadget
- MacOS: [Done] Serial communication problems on PB 6.0.4
- MacOS: [Done] Missing PB_Event_RestoreWindow from fullscreen
- MacOS: [Done] (>=PB6.00) Serious accessibility issues with ListViewGadget, ListIconGadget, and TreeViewGadget
- MacOS: [Done] PB v5.72 - Invalid Event Order with TAB key
- MacOS: [Done] ExplorerListGadget Change Pattern
- MacOS: [Done] Canvas Memory Leak ?
- MacOS: [Done] PB v6.04 - AddKeyboardShortcut Key Pad not work
- MacOS: [Done] 6.10 b1 - ListIconGadget, No update after change alignment
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

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.
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
https://www.purebasic.fr/english/viewto ... 71#p613171
Have Fun !
The Fantaisie Software Team