Ultimate++ Changelog

What's new in Ultimate++ 2023.2 Build 17045

Apr 12, 2024
  • 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

New in Ultimate++ 16961 Nightly (Sep 1, 2023)

  • 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

New in Ultimate++ 2022.2 Build 16270 (May 31, 2022)

  • 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

New in Ultimate++ 2018.1 Build 11873 (Apr 2, 2018)

  • Core:
  • New low-overhead CoWork parallelization method / pattern - Loop
  • Throughout the Core, many rvalue / universal reference related optimizations
  • CoPartition optimized to perform the work in calling thread if data size is small
  • SeedRandom without parameter now reseeds the random with host entropy
  • Array/Vector new Get/Set methods
  • New features for WebSocket client mode
  • plugin/bz2:
  • plugin/bz2: Streaming support
  • Painter:
  • Co Option to run parallel
  • BufferPainter::PreClipDashed
  • PdfDraw:
  • PdfDraw: DrawJPEG to directly embed JPEG compressed images into PDF
  • GUI programming:
  • In Windows, owned windows now have minimize box disabled (as minimizing of owned windows leads to strange behaviour)
  • LineEdit::WhenScroll event
  • New OptionBox widget (Option with LabelBox like graphics, also able to automatically enable/disable contained widgets)
  • FileSel now has option to add widgets into the dialog (e.g. to specify save format)
  • TheIDE:
  • Very long files (>400MB) are now opened for view rather than edit
  • Some trivial merge conflict helper tools
  • IconDes improvements
  • Esc scripting language now has 'continue' statement

New in Ultimate++ 2017.2 Build 11540 (Dec 14, 2017)

  • Core:
  • New AsyncWork class - U++ future-alike tool
  • CoWork: Exception propagation from worker threads, job cancellation support.
  • Bits class optimized, it is now possible to set multiple bits (count parameter)
  • WebSocket refactored for asynchronous operation
  • UTF-32 support functions, UnicodeCompose and UnicodeDecompose functions, support for UTF16 surrogate pairs
  • DeleteFolderDeep now deletes symlinks
  • MakeOne function (alternative to One::Create)
  • LoadFromFile, StoreToFile - Event variant
  • ReverseRange and SortedRange
  • Server Name Indicator support in Socket and HttpRequest
  • SSL1.1 API support
  • RegisterGlobalSerialize
  • GUI programming:
  • ArrayCtrl: Improvements in sorting, new public GetCellRect, GetCellRectM, GetSelKeys, SetRowDisplay, SetColumnDisplay, AcceptRow methods
  • Button NakedStyle style.
  • WithDropChoice: Set/Remove entry in drop-down list
  • TextCtrl::Load refactored, now can break very long (>1MB) lines
  • TreeCtrl: GetOpenIds, OpenIds
  • IdCtrls, SqlCtrls refactored, improved
  • Option: SetColor
  • Edit...Spin: RoundFromMin modifier method
  • ColorPopup now has button to enter the color as text
  • New features in ScatterDraw, ScatterCtrl
  • Header / Footer can now be changed using paragraph properties
  • QTFDisplay now ignores text color / paper if style is not normal
  • TheIDE:
  • Improved debugging of console applications with MinGW
  • MacroManager
  • Explicit Go to line.. operation (in addition to Navigator)
  • BRC now supports LZ4, LZMA and Zstd compression
  • File comparison tool improved
  • Directory comparison now can show/filter new/modified/removed files
  • Dark theme highlighting
  • Duplicate package function
  • FindAll button in normal Search (finds all occurences in current file)
  • HexView now remembers position
  • Selection can be interpreted as error list
  • now shows the number of selected characters
  • tab size now possible on per-file basis
  • Repository synchronize refactored, now supports both svn and git
  • Layout visgen improvements
  • theide now supports Visual Studio 2017 C++ compiler auto setup
  • MS build tools autosetup
  • 3rd party modules:
  • MinGW 64 updated to GCC-7.2.0
  • OpenSSL for VC++ updated to 1.0.2l
  • plugin/lz4: lz4 updated to 1.7.3
  • plugin/bz2: updated to 1.0.6
  • plugin/jpg: updated to version 9b
  • plugin/pcre: updated to 8.41
  • plugin/png: updated to 1.2.57
  • plugin/sqlite3: updated to 3.17.9
  • plugin/z: Updated to 1.2.11
  • plugin/Eigen: Updated to version 3.3.4

New in Ultimate++ 2017.1 Build 10804 (Jan 31, 2017)

  • Core:
  • Original U++ Callbacks are deprecated and replaced with Function with better lambda support. Begin/End methods are now renamed / deprecated in favor of (standard) begin/end.
  • U++ algorithms now primarily work on ranges, besides container SubRange, ConstRange and ViewRange are now provided.
  • Initial round of optimizations for ARM architecture.
  • U++ allocator optimized once again, locking is reduced in inter-thread deallocations, allocator now returns blocks always 16 bytes aligned (simplifies SSE2 code).
  • General cleanup of U++ algorithms, redundant algorithms removed, new Count and CountIf algorithms
  • Improvements in Core/RPC
  • CoWork::FinLock now provides 'free of charge' mutex at the end of worker jobs.
  • CoWorkerResources class now provides 'per worker thread' context.
  • CoPartition algorithm useful for partitioning array for parallel programming.
  • Where it makes sense, U++ algorithms now have parallel variant.
  • String further optimized, new TrimLast, TrimStart, TrimEnd, FindAfter, ReverseFindAfter
  • FastCompress (currently using LZ4) for internal program compression.
  • Core can be compiled on Android and major of features are currently ported.
  • xxHash - fast non-cryptographic hash - now part of Core.
  • SHA256 code now part of the Core.
  • plugin/pcre updated to the latest pcre version.
  • plugin/zstd now provides zstd compression (with multithreaded option).
  • plugin/lz4 now can multithreaded.
  • GUI programming & graphics:
  • PdfDraw and RichText now support PDF signatures.
  • RichText now can change header/footer within document.
  • ArrayCtrl got SetLineColor and GetCellRect methods.
  • TheIDE:
  • Comments now can be spell checked and there is comment word wrap and reformatting operation.
  • New functions / icons that search the web (launch the browser) for text selected or current identifier.
  • Optimal compilation mode is removed as confusing, it is now always either debug or release mode, release mode being configured for speed.
  • When comparing files, differences within single lines are now shown.
  • Most U++ designers now support drag&drop to reorganize lists.
  • Find File window was remastered.
  • New dialog for creating package file.
  • Android application can be directly launch on emulator from TheIDE.
  • Clang is now default compiler for native Android applications.
  • C++14 is now default standard for all Android builds.
  • Various android builder improvements.
  • ESC:
  • New math functions like sin, cos, tg, pow etc.
  • New replace in string function.
  • General:
  • Significantly improved the process of building TheIDE and UMK from tarball (POSIX environment). Compilation on multiple cores is possible with "-j" option.
  • Documentation improvements.
  • Bug fixes in various areas.

New in Ultimate++ 9251 (Dec 8, 2015)

  • Core:
  • Improved C++11 support.
  • Leap second of 2015 added to time routines.
  • GUI programming & graphics:
  • Improved support of UHD displays.
  • New QTF command {{* is shortcut for {{~0/0 to simplify using invisible tables for organizing text.
  • PdfDraw now supports urls (e.g. when converting QTF/RichText to PDF).
  • RichText/QTF now support round borders for table cells.
  • ScatterCtrl: new features.
  • TheIDE:
  • Assist++ and C++ parser now support C++11 and non-project headers, parsing ability is generally improved.
  • Android builder:
  • UTF16 support, UTF BOM autodetection.
  • Rename/Delete package functions.
  • Layout designer has new code generation features and can jump to C++ using the layout.
  • Editor now truncates files longer than 200MB / 1GB (32/64 bits ide) while loading, makes them read-only.
  • Editor now shows misplaced whitespaces in source files.
  • TheIDE now detects binary files and provides binary viewer.
  • Toolbar has new navigation icons and icons to switch editation mode (text/designer/binary).
  • Legacy GDB-backended debugger was refurbished and became 'Standard' debugger for GCC.
  • Icon designer now shows images as files icons when inserting image files.
  • Win32 releases:
  • Win32 now does not come as .exe installer, but simple .7z archive, which acts as "portable" installation. Nothing is written to the registry, nothing needs to be installed, simply running "theide.exe" setups everything needed. (theide.exe is 64bit executable. For those unlucky to still run 32-bit os, there is theide32.exe).
  • There is once again 'mingw' variant which is coupled with TDM64 release of mingw-w64.

New in Ultimate++ 5431 (Oct 23, 2012)

  • Core:
  • String class has been further optimized for improved Cat performance.
  • Id class was refactored to better support multithreaded programming.
  • STATIC_ASSERT introduced for compile-time checks.
  • TCP/IP and HTTP was refactored and integrated into Core, providing new TcpSocket, IpAddrInfo, HttpHeader and HttpRequest classed (effectively obsoleting Web package).
  • Value was refactored and optimized, now using small value optimization technique.
  • Value got Xmlize (conversion to/from XML) and Jsonize (conversion to/from JSON) support.
  • Date now has operator++/--.
  • Exit is now equivalent of C exit function, implemented using exception trow to *_APP_MAIN and C++ friendly.
  • Thread now has AtExit support.
  • ini parameters now can be optionally encapsulated using INI_* helpers.
  • Sort algorithm was refactored, works about 10% faster.
  • LOGHEX and DUMPHEX logging macros provided for logging Strings in hexadecimal form.
  • LoadFromJsonFile and StoreToJsonFile jsonize object from/to files.
  • Sql:
  • Of' method, used to qualify SQL column names, now has new alternative notation using operator().
  • Schema files information is now accessible application providing a form of database schema introspection.
  • JoinRef method of Select provides automatic join where join condition is synthetized by framework based on schema introspection.
  • SqlCtrls now support automated mode based on schema introspection.
  • SqlSession now has ThrowOnError option, when active all SQL errors throw SqlError exception.
  • Sql: Sql now supports fetching ValueMap of row (using Fetch variant or GetRowMap after Fetch).
  • MassInsert now has "remove" option to remove rows inserted before inserting, NoUseTransaction option and is using RDBM specific SQL syntax (instead generic UNION ALL trick) when possible.
  • Secondary SQLR default session intended for 'read-only' sessions.
  • Default sessions SQL and SQLR now can be per-thread (useful for multithreaded server applications).
  • Columns and table names now can be optionally quoted (new mode).
  • Sql: SqlLoadTable and SqlLoadColumn helper function can read whole tables into C++ VectorMaps.
  • New Sqls::operator^ fetches single row from select and returns it as ValueMap.
  • RichText, RichEdit:
  • Paragraph ruler now can have dotted or dashed styles
  • CtrlLib:
  • EditField now has WhenPasteFilter that can be used to change pasted clipboard text before inserting it.
  • FileSel in Win32 is now using separate thread to lazy-load icons.
  • ColorPopup checks clipboard and when it founds a text resembling color definition (like #12aa33 or 123 55 6), adds this color to predefined colors in selection.
  • IDE:
  • New, vastly improved GDB frontend.
  • Startup times should be significantly improved.
  • C#, JavaScript and css syntax highlighting.
  • Ide now can view .png, .jpg, .gif and .bmp files and even edit smaller .png files.
  • New save file on window deactivation option is helpful when editing scripts or web templates - no need to save file when going to another window to test.
  • Insert clipboard as C string, convert text to C string functions.
  • New find in files dialog option to filter files according to their 'read only' status.