Releases: ultimatepp/ultimatepp
2025.1.1 (July 2025)
Release notes
This is the first hotfix for the 2025.1 release. We highly recommend all users install this version, especially those running the latest Linux distributions with LLVM 20 or newer.
Changelog
Core
- Fix warnings on Clang 20 related to non trivial memcall in Topt.h
ide
- Fix immediate Assist++ crash on Clang 20
2025.1 (March 2025)
Release notes
Hello everyone! We're incredibly excited to roll out our latest update, and it's a big one! This release is packed with enhancements designed to improve your development experience, modernize the look and feel of your applications, and boost performance under the hood. From a deep dive into stunning dark mode support to powerful new IDE features and foundational core improvements, there's something here for everyone.
Download the latest version today and let us know what you think! Happy coding!
Changelog
Core
- In Posix .log files moved to .local/state/u++/log
- Lerp templates and functions for linear interpolation
- FormatIntBase changed to work with int64 instead of int
- DarkTheme function adjusted to better convert low luminosity colors
- New AColor and SColor types allow simplified adjustments for dark mode when runtime theme switch happens.
- Moveable logic changed to improve incomplete type handling
- CountBits / CountBits64 function (using popcnt instruction)
- new flagLEGACY_CPU to support really old CPUs
CtrlLib, CtrlCore
- Runtime skin changes
- InfoCtrl::LeftZ/RightZ scaled methods
- Additional Animate functions for animation of widgets or general rectangles
- WhenLeftUp event added to DocEdit/LineEdit/RichEdit
- General chameleon look improvements in Linux/Windows/MacOS
- AllowDarkContent in color selection widgets shows colors converted with DarkTheme if dark mode is active
- Nicer Win11 dialog icons
- Experimental Wayland support (there is now Wayland option in theide setup)
RichEdit
- Set last character format tool
- Find previous button in Find dialog
- When find/replace dialog is open Enter key does another find
- PersistentFindReplace now default false
- Ctrl+Click now opens http and https links
- Zooming improvements
- PixelMode - special mode where images at 100% are pixel perfect.
- AllowDarkContent, DarkContent - displays all colors converted with DarkTheme if dark mode is active, effectivelly allows dark paper in dark mode.
Core/SSH
- libssh2 upgraded to version 1.11.1
ide, umk
- Posix config is now always in the same folder .../theide/.. for all variants of theide and umk (to share the same .var and .bm files)
build process in Win32 now automatically picks manifest.xml from packages (usually from CtrlCore) and application icon and creates .rc file automatically - RichEdits in theide now support dark theme
- Json/Xml viewer local menu
- aux packages now have Remove all menu command
- bmGIT_BRANCH in build info
- The option in settings to allow access to Downloads folder (default off on MacOS to prevent MacOS asking the permission)
- Search in files new external includes and current assembly options
- "Preselect All" option in assembly setup
- Git history of file now shows blame
- Git history of file Copy Hash button
- Multiline cursor (Alt+Shift+Down to start)
- Insert sequence tool
- Automatic rc file creation (with app icon and manifest)
- PDB debugger now can use Esc scripts for pretty printing
- XFCE terminal support in setup
- Experimental glslc support (see upptst/vulkan)
- Experimental CUDA support
macOS
- Fixed Assist issues
- Fixed desktop folders (e.g. GetDownloadFolder function)
- Main menu flicker prevention
2024.1.1 (December 2024)
We are excited to announce the first service release for 2024.1 version. This update includes the following bug fixes:
- Resolved a crash when opening the Assist++ dialog on macOS
- Fixed a compilation error in the Core/SSH package
We highly recommend that all users currently on version 2024.1 update to this release.
2024.1 (November 2024)
Core
- First release of U++ that requires C++17
- Moveable concept redesigned with C++17 features. U++ now allows non-moveable types to be stored in Vector flavor of containers (using Upp::is_upp_guest). PODs are automatically moveable (aka trivially relocatable)
- Upp::Tuple now supports structured binding
- GetFileTime, GetFileLength, FileExists, DirectoryExists and FileMapping refactored
- Stream::GetAll now invokes LoadError on negative count
- ValueCache limits setting methods are simplified
- Value now directly supports 'float' type
- Some iffy code now made more C++ compliant (e.g. always using memcpy for unaligned data)
- AsXML had new XML_ESCAPELF
Draw
- UHD image now can serve as source for SD image
- New S3 .iml image flag - the images are drawn supersampled 3x, usually without antialiasing, and only downsampled at runtime
Painter
- Multithreaded rendering further optimised
- New image filtering parameter - so far, rendering image was always with bilinear filtering, new parameter allows other Image filter like Lanczos 3
CtrlCore
- Horizontal mouse scroll wheel support
- CtrlMapper now provides operator()(Ctrl, T, const T& factor) for simple unit conversions
- gtk backend improvements, XWayland mouse cursor bug workaround
CtrlLib
- CtrlMapper now provides operator()(Ctrl, T, const T& factor) for simple unit conversions
TheIDE
- Icon Designer refactored and optimised, new tools added, S3 flag support added
- Alt-M now goes to special scratchpad file of the same type as is current file, this is helpful e.g. for temporary storing and editing parts of .iml images that are then composed to the final image.
- Output directory in assembly definition now can be left empty and defaults to reasonable path.
- Hexadecimal view is now much faster
- Fixed further corner case Assist++ problems
- Layout designer text field, used with e.g. Labels, now has Qtf button to edit text with RichEdit
- Git file history now goes through renames
- Compare with menu now suggests files in Download folder too
- Main package configuration dialog improved
- Search through all assemblies
plugin/Zip
- zip64 support
plugin upgrades
- plugin/sqlite3: 3.46.0
- plugin/lzma: 24.6
- plugin/zstd: 1.5.6
- plugin/z: 1.3.1
- plugin/png: 1.6.46
- plugin/tif: 4.6.0
- plugin/jpeg: 9f
- Core: LZ4 1.9.4
Win32
- OpenSSL upgraded to 3.2.1
- Clang compiler upgraded to 18.1.5
2023.2 (October 2023)
This is release is mostly focused on improving TheIDE capabilities.
Core:
- CParser::ReadDoubleNoE (to ignore E part of double)
- CParser::ReadIdh (with '-' in id)
Draw, CtrlLib:
- StdDisplay (if CtrlLib is present) now supports \1 qtf escape code
RichEdit, RichText:
- "Paste without formatting"
- Clipboard 'HTML format' support
- GetPlainText allow_tabs parameter; CtrlLib Prompt now sometimes uses '\t' to separate table cells.
- EncodeHTML strikeout support
ide:
- New C++ sources indexer mode - previoualy, after each file change, all depended files were reindexed. That often resulted in very heavy CPU load after each header change. In the new mode, only the changed file is being reindexed - while less accurate, real problems in this new mode are actually rare and it makes for much more responsive experience using theide.
- Many Assist cornercases fixed
- Result lists of Find in Files and Usage now have "Replace" button which effectively brings the "rename the entity" functionality (e.g. to rename method, find its Usage and then use Replace)
- Bottom pane was redesigned allowing for more Find in Files and Usage result lists.
- Many improvements in source comparsions
- "Show git history of file" now allows for choosing branches
- "Compare with" now suggests files with the same name from other upp nests
- "Compare directories" now allows comparison with git commit
- Various windows like comparisons are now non-modal. It is now e.g. possible to open multiple e.g. Directory comparison windows
- Merge nests function got ability to specify target folder. Default mode is now to "import" packages missing in the first nest to "imported" subfolder of the first nest. The idea is to create an assembly of first nest and its "imported" subfolder to have imported packages fixed, while still allowing the use of the very same packages from original sources with another assembly.
- Visual improvements, UHD versions of many icons
- C++ Language standard for assist (e.g. C++ 17) can now be selected in Assist setup
- Flow breaking commands (return, break, continue, goto, co_return, throw) now have specific syntax highlighting
- TheIDE now displays out-of-page function/class headers in the first line of editor. This is helpful for quick orientation when jumping into long function body.
- External changes for files now getting proper undo records (previously undo history was lost when file was edited outside of ide session)
- Repo sync git pull mode changed to "merge" (from "rebase")
- U++ Builder now defines bmGIT_HASH (with git hash of first nests HEAD, if it is git repo).
- Copy with Syntax highlighting function
umk:
- -h option to automatically download missing packages from UppHub if possible
Win32:
- OpenSSL now upgraded to 1.1.1w
2023.1 (May 2023)
Overview
The new release brings some long awaited features. As you might remember for the last release we removed the old deprecated library for code formatting. In the current release formatting is back based on clang-format. Also TheIDE has got a special dialog when you can adjust formatting to your needs. Formatting is available under "Assist" -> "Reformat" menu. More information about the formatting implementation within TheIDE can be found on this documentation page.
macOS support, temporarily removed in previous release, is back. Our POSIX installation is now universal, covering Linux, BSDs and MacOS, which means that when you unpack it on macOS you just run ./install script to download all dependencies using brew and build umk and theide just like on other POSIX platforms. It is compatible with X86_64 and Apple ARM CPUs.
In other news, libclang based Assist++ has been significantly stabilized and some corner cases are now fixed.
Happy coding with U++ and TheIDE! We are glad that you decided to try our software!
Core
- MacOS is supported again; POSIX and macOS releases are now merged to single archive
- X11 backend compiles again
TheIDE
- clang-format integration
- assist stablization
- .iml Image selection database tool
CtrlLib
- Menubar GTK based styling has been improved
2022.3 (December 2022)
Overview
The leading entity for this release is migration for our homegrown C++ parser to LibClang. This is the revolutionary change in the context of how easy is to develop code with our integrated development environment TheIDE. If you are familiar with older parser, you will noticed changes in plus immediately. From other things we optimized memory consumption used by our widgets. All applications recompiled with the newest version of U++ will be the beneficiaries of this change. Furthermore, we refreshed TheIDE's AndroidBuilder and it is now capable of building Andorid project using the latest tool-chains from Google.
We would like to thank all of our amazing contributors and our users! Without your help we wouldn't be in the place we are today. Also, many thanks to our UppHub contributors who do a great job. Your additional packages are very helpful and much appreciated by our users.
Release highlights
- Homegrown C++ parser in TheIDE is replaced with LibClang resulting in new and improved Assist++ features
- Optimized memory consumption of U++ widgets.
- macOS version is not released with 2022.3. Our main priority is to leverage this inconvenience in one of 2023.x releases. If you want to use U++ on macOS please use 2022.2 instead.
TheIDE:
- Autocomplete now correctly works in most cases (except in template bodies, which is libclang limitation)
- Code navigator refactored and improved
- TheIDE now shows C++ errors while editing sources
- TheIDE now shows information tips about program symbols when you leave mouse over it (documentation if available, declaration signature if not)
- New function "Usage" shows all usages of current symbol through all project sources based on C++ analysis. With virtual methods, it shows all overrides of base class method.
- Android Builder was updated and it is compatible with the latest Android platform version. At the time of writing these words it is version 33.
UMK
- UMK displays version when run without parameters
CtrlCore, CtrlLib:
- Memory consumption (esp. sizeof) of widgets greatly reduced (by up to 70%).
- LabelBox now allows center and right alignment.
- Fix issue with not working drag and drop for files on Windows
2022.2 (May 2022)
This release serves mainly as a service pack to 2022.1 and contains significant number of resolved issues. There are limited set of new features.
Release highlights:
- Core: IsVoid(String) function to avoid confusion with IsVoid(Value)
- Core: LoadFile fixed to be work with special files in POSIX /proc/
- Core: BiVector, BiArray Create with constructor parameters
- CtrlLib: RichTextView WhenLeftClick, ClearSelection
- CtrlLib: FileSel::NoExeIcons to suppress loading of icons from .exe files in background
- CtrlLib: Fixed issues with namespace agnostic layouts
- Image: Support for >2G pixel images (ImageBuffer::GetLength now returns size_t)
- Draw: Fixed/optimised FlipImage
- plugin/tif: Minimal geotiff support via metadata (see reference/geotiff)
TheIDE:
- ide: git format-patch patch format support
POSIX:
- Fix Manjaro (GNU/Linux) installation dependencies
2022.1 (April 2022)
Release highlights
- sizeof(wchar) is changed to 4 (32 bits) to support non BMP unicode characters
This might bring some incompatibilities in the code that expects wchar to be 16 bit, which
escpecially involves dealing with Win32 (and to lesser extend MacOS) APIs, so if your application
is doing that, please check all instances of WCHAR (UniChar on MacOS) or even wchar
especially type casts.
To support host APIs, char16 is introduced (but there is no 16-bit String varian).
Use ToSystemCharsetW, FromSystemCharsetW to convert texts to Win32 API.
- Support of drawing non-BMP characters in GUI
- Vastly improved character font replacement code (when drawing characters missing with requested font, replacement font is used)
- Last instances of Win32 ANSI calls (those ending with A) are removed
- UTF handling routines are refactored and their's naming is unified
- RTF is now being able to handle non-BMP characters (RTF is used as clipboard format for RichText)
- Improved input method (aka preedit in Linux, aka marked text in MacOS) support
- ConvertFloat and EditFloat to handle float vs double precision differences
- Improved FP <-> text conversion routines
TheIDE
- UppHub now raises error when Git is missing
Win32 release
- clang updated to actual version (llvm14)
- zlib updated to 1.2.12
- openssl updated to 1.1.1n
- jpeg updated to 9e
- Instant setup for VS 2022
POSIX
- In order to satisfy UppHub requirements, Git dependency was added
2021.1 (May 2021)
Release highlights
New system for 3rd party modules, "UppHub": independently developed U++ modules residing in Git repositories now can be seamlessly integrated, including automatic installation of missing packages if they are in the UppHub.
Core
- double NAN and INF values are now considered Null (IsNull returns true for them).
- FileSystemInfo now returns volume names of network drives
- Improvements in FindFile
- String middle tier heap handling optimised
- U++ does not require MemoryFreeThread call at the end of thread (it is now implemented using thread_local destructor)
- Core/SSH: the underlying libssh2 library is upgraded to v. 1.9.0
CtrlCore
- New C++ style for iteration of widget children now possible for(Ctrl& q : widget)
- Pen support (pressure, tilt etc...)
RichText, RichEdit
- 1.15 line spacing support
- JPEG raw image data is now exported to PDF as JPEG (instead of recoding)
TheIDE
- Context goto now support AK_ key definitions
- TheIDE now contains credentials manager for git and svn (including github tokens)
- Various improvements to text comparison dialogs - ability to copy and delete individual lines between versions, filtering by file time (for directory comparison).
- Repo history of .upp files directly available via package context menu
- Open package dialog filtering options redesigned
- New function to copy positions as text to clipboard (e.g. "RichEdit/Modify.cpp:27") and go to such position based on clipboard content. Useful for communication between developers.
- Some common nest root files like README.md or LICENSE are now directly accessible through pseudo-package.
- TheIDE/umk build flags MAKE_LIB and MAKE_MLIB force generation of library instead of executable.
- New "Merge nests" function (in Package organizer) copies all used packages that are not in the first nest of assembly into the first nest. In U++, first nest usually contains the application code whole while other nests contain libraries (U++ or 3rd party libraries). This function is intended to "freeze" the non-application code before releasing / tagging / branching to reduce the chance that a change of that code does not break the application.
- TheIDE now can "Open terminal" at various directories (output directory, package directory, source file directory etc...), with PATH augmented with current build executable directories.
- Support for .md (markdown) format
- Improved debugger threads tab
- Support for override in virtual methods dialog
- Ctrl+Shift+Up/Down now moving the line or block of text up/down
Win32
- Now ships with minimal git (mingit) implementation
- CLANG now at version 11.0.0
Additional info
- The release is based on 15947 svn revision