Enhancements
- #647, #648, #649, #650, #652 - Implements the $USELIBRARY meta-command and functionality - @RhoSigma-QB64
- For use of our brand new QB64-PE Libraries Pack add-on.
- The add-on is optional to ease library usage, but the traditional way of $INCLUDEing libraries still works without changes.
- #651 - Implements three new IDE editing features - @FellippeHeitor
- Auto-closing of brackets and quotes.
- Ctrl+D for line/selection block duplication (Edit -> Duplicate lines).
- Alt+Shift+Up and Alt+Shift+Down to move lines/selection blocks up and down.
- #662 - Implements a feature request by @Bhsdfa to define another EXE output folder, this closes issue #661 - @RhoSigma-QB64
Code: (Select All)
Where is my EXE saved?
Master behavior determined by IDE config as follows:
|
+-> Save EXE to Source Folder?
| |
OFF ON
| |
| +-> EXE goes to source folder, except new unsaved code,
| which goes to default location (no known source
| path yet), hence always save new code before first
| compiling to avoid the default location fallback.
|
+-> Default EXE location set? (IDE Run menu > Set Default EXE Folder...)
| |
YES NO
| |
| +-> EXE goes to 'qb64pe' folder.
|
+-> EXE goes to the user chosen location if existing,
else fallback to 'qb64pe' folder. The exist check is
performed once at start time, hence a removable USB
drive or virtual RAM DISK must be accessible at start
of QB64-PE. However, the fallback is temporary, if the
user location is accessible at next start, then it is
used again. Command line compiling follows the logic above, except if the '-o'
option is used, in fact the only method to override this logic.
A given absolute path here will save the EXE exactly there, any
relative path assumes _STARTDIR$ as root.
To change the default location from command line use the new switch:
-s:ExeDefaultDir=<path> (quotes may be required)
The path may be absolute or relative assuming _STARTDIR$ as root.
Note the new location is saved and will be used by the IDE too then.
Library Updates
- #645, #654 - Update and refactoring of various libraries - @a740g
- Replaces `image_log_error` with `image_log_warn` to reduce unnecessary error-level log output.
- Reorders image format loading sequence to: `stb_image`, `sg_pcx`, `qoi`, `sg_curico`, and finally `nanosvg`.
- Updates `nanosvg`, `miniaudio`, `libcurl`, `FreeType`, and `clip` to their latest versions. These updates include important bug fixes and security patches.
- Removes obsolete logging code in `libqb`, now superseded by the recently added logging system.
- Switches the build to `C++20`, preparing for upcoming features that will rely on the newer standard.
- #655 - Further relaxing ALIAS name validation, building on the work introduced in #535 - @a740g
- The previous update did not account for several critical C++ operators, which are essential for leveraging the underlying C++ compiler in more advanced and novel ways. By including these operators, developers can now use techniques that enable direct use of the C++ compiler without the need for additional header libraries.
Bug Fixes
- #615 - Fixed a rather subtle IDE module error - @RhoSigma-QB64
- Reported at Discord
- If there was a program with a line count close below the next 1000s boundary and a search was performed, then if the found position was close to the program end and the IDE window height was bigger than the remaining program lines after the found match, then empty line padding could lead to a "subscribt out of range" error in an internal array in case the number of empty padding lines was bigger than the difference of the next 1000s boundary minus total program lines.
- #657 - Fixes a bug in the font library function `UTF32::ConvertUTF16()` - @a740g
- The function incorrectly attempted to consume a UTF-16 BOM even when none was present.
Full Changelog: https://github.com/QB64-Phoenix-Edition/...0...v4.3.0