|
Roadmap
Current release
5485 (Oct 2012)
The focus of this release was server programming. The main new feature is "Skylark", lean and mean U++ based web development framework.
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.
Previous releases
4193 (24 Nov 2011)
"Rainbow" technology decouples U++ GUI from host platform. It is now possible to develop new GUI
implementation without changing core U++ files. "Framebuffer" package uses Rainbow to implement
GUI for trivial RGBA framebuffer (with keyboard and mouse inputs).
New command line utility "umk" - GUI independent, U++ package builder: umk.
Docking package was adopted to main source tree.
TheIDE
Support for UTF8-BOM encoding.
Layout files are now syntax highlighted, Assist++ now knows correct line position info.
Database schema files (.sch) are now syntax highlighted. Assist++ now knows to correct line position info.
Ide now has minimal Objective C and C++/CLR support.
New function to export documentation to html or pdf.
Layout designer now has 'struct' option in code generator
Image (.iml) designer now can import (insert) whole another .iml and also export .iml to png files.
There is now Assist++ for #include.
InsertColor function now supports QTF colors.
Local menu on package file items now has "Open file directory" item.
Library
Core
U++ now has Value compatible Complex type.
CParser has new Unicode Escape option to understand "\u" escape codes (as in JavaScript).
ValueArray has now Insert, Append and Remove methods.
ValueMap has now Set(key, value) method.
Value now has operator[] (key) and operator[] (index) methods to directly access contained ValueMap and ValueArray elements.
double formatting (Format, Convert) now has support to easily replace decimal point with ',' character.
Core now has JSON (JavaScript Object Notation) parsing and creation support.
String now has GetCharCount() that is able to return correct number of characters (code-points) in String even if encoding is UTF-8.
CtrlLib and CtrlCore (GUI library)
ArrayCtrl now has AsText, SetClipboard, AsQtf and AsCsv methods.
EditField now supports limited text highlighting.
New SetLayout_[layout name] template function generated from .lay (used to change compatible layout).
Draw/PdfDraw/Report (graphical output)
Draw/PdfDraw/Report got minimalistic PDF/A support.
AttrText now has Bold/Italic/Underline/Strikeout methods.
New QtfReport for simplified reporting of Qtf.
Other library changes
In SQL trace log, questionmark parameter placeholders are now replaced with actual parameters.
plugin\Sqlite3 is upgraded to 3.7.8.
plugin/tif is upgraded to version 1.43.
plugin/jpg now supports EXIM image orientation metadata.
New plugin/wincert package supports basic Win32 certificate manipulation and PDF digital signing.
HttpClient now supports PUT method.
3211 (16 Feb 2011)
TheIDE
SSE2 as Option in main config, templates now include SSE2 as default (RM #9).
new function - convert selection to ASCII.
Main package configuration editor shows structured flags accepted by packages.
Replaced QuickTabs with TabBar, reorganized Environment dialog.
Allow conditional breakpoints.
Support for CLOB columns in .sch file (#14).
Library
Core
Added missing Gate4::Execute.
Tuples now Moveable if all elements moveable.
Added Xmlize ValueArray and ValueMap.
Added DayOfYear, StrToTime; Draw: Rotate180.
Thread threadid support.
FormatIntBase added 'upper' option. Added FormatIntHexUpper function.
Draw
Added ImageOps hotspots.
RASTER_8ALPHA now considered non-premultiplied (fixes issue in some .png files).
Painter
Painter now depends on Draw.
plugin/gif:
Support for LCT.
CtrlCore
EncodeRTF improved to support page size, margins and table cell borders.
GetOpaqueRect, GetVoidRect now const
TopWindow FullScreen for open window in Win32
CtrlLib
FileSel: Support for Terminal Services client shares (Win32).
FileSel lazy and optimized file icon loading.
Automatic landscape mode for RichText print.
LabelBox visually supports Disabled state, LabelBase has got disabledink.
Splitter can now have any width.
ArrayCtrl with embedded Ctrls optimized to work well up to 10000 widgets.
RichEdit
Added SingleLine, Filter.
Improved process of searching for speller dictionaries.
Added some missing czech translations.
GridCtrl
Added ClearChanged(), added missing row_order setting in Remove0
Sql
operator[](SqlId) now invokes NEVER (in debug) when column is not found
Oracle: SQLT_TIMESTAMP support (thanks alendar)
Web
SmtpMail: Refactored, added support for character encoding in headers, added recipient/sender names,
Bazaar
Many packages added and improved: Scatter, DeEncrypter, CMeter, Protect, Tree, Dispatcher, Gen, SDLCtrl, PolyXML, PlotLib,PlotCtrl, SysInfo, Media, MediaPlayer, Functions4U, plugin/portaudio, Sound, SoundExample, AutoScroller, CtrlFinder, CtrlProp, LogPosCtrl, PointCtrl, PopUpC, RectCtrl, Styler, ValueCtrl, Docking , TabBar, SysExec, Protect, Updater, SysExecGui, OfficeAutomation, Dispatcher, Styler, Cypher, ProductVersion, Uniq, SplashSV and HelpViewer.
2791 (18 Oct 2010)
TheIDE
Now it has direct support for Windows SDK 7.1.
Library
Core
There are now new templates Tuple2 - Tuple4.
Stream class got new methods Peek and PutPtr intended for optional optimizations.
In Vector and Array template classes, interface was changed so that all Add methods are now returning the reference to the element inserted.
String and WString has new Replace method.
Draw
plugin/gif now has support for animated gifs, Raster and Raster encoder have new GetDPI and SetDPI methods. DPI information handling for png, tif and jpg was fixed.
AttrText utility class has new NormalInk method and supports conversion from Value.
CtrlCore
There is a new IsPainting method.
CtrlLib
Progress has now blocked open if invoked during Draw method. IdCtrls have now Reset method.
New utility function SelectDirectory.
LineEdit now reacts to Shift+MouseWheel does horizontal scroll with horizontal scrolling.
RichTextView got new WhenMouseMove callback.
GridCtrl
Has now WhenBeforeChangeRow and WhenBeforeChangeCol callbacks, CancelDuplicate, SetCtrl, FindCol, ReadCol and CopyColumnNames methods and SetValues, GetValues and Xmlize template specialization.
Sql
SqlSelect now can add individual fetch values using operator().
New SqlMassInsert provides generic acceleration of mass inserts using 'union all' trick.
IsSame is a new SqlExp equality test which is null safe (null == null yields true).
Oracle8 has new BulkExecute interface to OCI8 array binds repeated command execution with varying parameter sets; speeds up inserts / updates drastically over networks with long roundtrip.
XmlRpc
XmlRpcCall has now Proxy and ProxyAuth methods.
New plugin/Box2D package was added.
Bazaar
Added packages
Protect: Software encryption system.
Cypher, StreamCypher, CypherTest.
DeEncrypter: A *simple* AESStream based Encrypter / Decrypter.
BufferStream: Stream based on Vector<byte> buffer, self growing.
CMeter: A progressbar / meter / slider with some versatile settings Ctrl
Dispatcher: Generic class to dispatch data to arbitrary recipients.
HelpViewer, TestHelpViewer.
MtAlt
Some improvements
Scatter
Some fixes
Docking
Some fixes
PixRaster
Updated Leptonica library to version 1.65
TabBar
Minor changes and fixes
Timer
Minor changes
ExpandFrame
Minor changes
AESStream
Added SHA2 functions
LEDCtrl
New LED control by Christian
Functions4U
Added functions, GatherTpp, improved doc and fixed bugs
SysInfo
Added GetAdapterInfo
Control4U
Added Knob
OfficeAutomation
Cyrillic characters support
UltimateBook
Updated doc
2467 (10 Jun 2010)
TheIDE
Now has QTF designer.
Library
Core
[W]String got new variant of ReverseFind method.
CtrlCore
There is a new static method Ctrl::GetEventId to help identify individual GUI events, intended for use in caching schemes.
CtrlLib
Update system was parametrised.
Handling of active file type in FileSel was improved.
Splitter now has WhenSplitFinish.
PdfDraw
Got support for fill patterns.
Bazaar
SysInfo: Added CPU temperature monitoring and improved battery status.
Functions4U: Added new SVG color functions and doc.
Controls4U: Added ActiveX controls (VLC and web browsing).
MtAlt: Added support for fast 5-argument callbacks (copy and pick version).
Form: Form core package, Editor and sample.
Scatter: Added SetSequentialX and SetFastViewX for faster refresh.
Docking: Bug fixes, some small feature additions.
ExpandFrame/ExpanderCtrl: Fixes fopr horizontal alignment.
AESStream: Added SHA2 functions.
2361 (4 May 2010)
TheIDE
Packages now sorted by directory closeness to main package directory, names later - puts main package nest or main package subpackages first in the list
Library
Core:
ArrayIndex: Added Detach, PopDetach
XmlRpc: Added bool XmlRpcPerform(Socket& http, const char *group);
CtrlLib:
Added ArrayCtrl WhenScroll
ColumnList: AutoHideSb
FileSel: list is autohide
EditField ReadOnly Ctrl+C fix
DocEdit: NoEofLine
RichEdit now supports dropping Image files
SqlCtrl: SqlArray has new WhenFilter Gate (able to filter records being fetched)
Sql:
Optional SqlSession errorhandler routing is now installable
SqlSession: First SQL error is recorded (until ClearError) instead of last
Uppsrc:
New IT-IT translation
2232 (17 March 2010)
TheIDE
Sorting of package has been improved, placing project packages first
Insert menu now has typedef ... CLASSNAME entry.
FileSel was improved by adding Places with common directories.
Library
Core:
XmlRpc has improved error handling.
Xmlize now supports all Core Value types and has got support for Value serialization.
XmlParser has got new Peek methods. Socket has new GetPeerAddr method.
CParser now provides the information about current column.
CtrlLib:
TabCtrl has new Find/Set/Remove/Insert methods using reference to slave instead of index.
RichText:
RichTextView now have "ShrinkOversizedObjects" option.
2070 (16 February 2010)
TheIDE
User interface for Find and Replace was significantly reworked
Current editor line is now highlighted in the left bar.
Library
Core:
Support for Win32 .lnk files (GetSymLinkPath function, FindFile::IsSymLink method) - same interface as for Posix symlinks.
ConvertDate has new Truncate option (truncates Time to Date), corresponding StdConvertDateTruncate global Convert added.
CtrlLib:
SliderCtrl widget, has new Jump method.
ArrayCtrl class has new WhenMouseMove Callback.
EditField has new WhenEnter callback.
TabCtrl has new NoAccept option
Draw:
The search for missing glyphs (i18n issue) was optimized.
1952 (27 January 2010)
TheIde
Improved installation in Win32 with support for the latest Win32 SDK.
Helpsystem has vastly improved searching capabilities.
Build process now supports new link options - Posix releases now use "gc-sections" linker option to dramatically reduce the size of resulting binaries (up to 40%).
Library
CtrlLib:
File selector (FileSel class) got networking support in Win32.
TrayIcon in X11 now supports notifications.
TopWindow in X11 now supports SetAlphs.
Painter:
Image rescaling algorithm was improved for better downscaling.
Core:
Containers now have a new debugging utility to resolve pick semantic errors.
1824 (21 December 2009)
TheIDE
Autosetup now recognizes Win32 SDK 7.0.
Library
Core:
XmlRpc package adds support for XML-RPC based webservices.
LanguageInfo has been completely refactored.
Bazaar:
GoogleTranslator: New version.
Functions4U: New package with additional functions to complement Core and CtrlLib.
Controls4U: New package with additional graphic controls.
SysInfo: Improved Unicode support.
1713 (30 November 2009)
TheIDE
.t files are now saved with strings converted by escaping >127 characters (and back on loading). This fixes venerable problem of UTF-8 string literals in CJK Windows and MSC compiler.
Library
CtrlLib:
TreeCtrl InsertDrop now returns ids of inserted nodes.
A new set of utility functions that simplify selecting files introduced (see http://www.ultimatepp.org/src$CtrlLib$FileSelUtil$en-us.html)
HeaderCtrl columns now can have a tooltip
SliderCtrl now allows reversed orientation (thanks avpavp!)
RichEdit:
New much more effective speller dictionary format, utilities required to convert OpenOffice speller dictionaries into U++ speller files.
Labeled paragraphs now marked with arrow displayed in the left bar.
Previously private StyleManager class capable of managing paragraph styles has been made public.
Report:
New methods ChoosePrinter, ChooseDefault printer allow selecting printer BEFORE report is created, setting the physical page size based on chosen printer.
Core:
In Win32, console applications no longer pop up a MessageBox when panicking, instead they write the panic string on the error output and terminate.
GridCtrl:
Multiline popups now allowed, using GridDisplay to paint the content.
Bazaar:
New functions to SysInfo
Urr - UDP request-response protocol added
1659 (26 October 2009)
Library
Core
GetUtcTime
New Split variant with String delimiter
ConvertTime Min, Max
Core, CtrlLib: ConvertDate, ConvertTime now have Default method -> propagates to date/time widgets as well...
PostgreSQL: GetInsertedId now supported for tables with primary key 'id'
CtrlLib: MenuBar WhenOpenSubMenu, WhenCloseSubMenu callbacks
Sql, SqlExp: Sql::InsertNoKey(Fields) ommits first column - intended for key with autoincrement
TheIDE
Minor IDE speed improvements - removed unnecessary Assist++ package check when inserting / removing separators and auxiliary package contents
Package selector now shows app icons if available
1607 (07 October 2009)
Library
Draw
DisplayWithIcon (Display that adds an icon to any other Display)
AttrText now has 'SetImage' (places the icon to the left of text)
CtrlLib: DropTree widget
Web: void AttachSocket(Socket& socket, SOCKET s, bool blocking)
MSSQL: IdentityInsert helper (bypass of IDENTITY column insertion)
CtrlCore: RegisterSystemHotKey (system-wide hotkey)
1579 (23 September 2009)
Library
Core: Added support for many various 8-bit encodings
Geom: Added new Computational Geometry algorithm: 2D convex hull calculation (ConvexHullOrder)
Sql: SqlExp, SqlSelect AsTable, Joins accept SqlSet
RichText: Optimized by caching paragraph data and layout
Draw, plugin/tif: Added GetActivePage support
Fixed a lot of minor bugs
1517 (19 August 2009)
Major overhaul graphics infrastructure is finished, U++ is now capable of headless drawing operations
(e.g. drawing graphics and text into .png files in console applications, without X11)
(example: http://www.ultimatepp.org/reference$ConsoleDraw.html)
Minor improvements:
Library
RegExp fixed to work with mingw, added GetMatchPos method
SetSurface functions for optimized raw output of RGBA data to screen (example: http://www.ultimatepp.org/reference$SetSurface.html)
Added Blackfin CPU support into Core
EditField::NullText method now can provide an icon
RichText, Report: RichTextLayoutTracer ability (example: http://www.ultimatepp.org/reference$RichTextLayoutTracer.html)
Core: Added StringStream::Reserve
TheIDE
Added package internal include paths
Ctrl+mouse wheel changes font size
1314 (17 June 2009)
Library
CtrlCore
Fixed several X11/Compiz/SCIM compatibility issues
RichText
QTF: Added text-type rich object format
GridCtrl
Added WhenMoveRow, CancelMove
Improved search results highlighting
TheIDE
Import directory source tree into package
Support for multiline svn commit messages
Assist++ now supports SQL schema files
FileTabs now persistent
Non-fixed pitch fonts allowed in editor (used as fixed...)
1254 (03 June 2009)
Library
Various improvements in SQL related stuff (SqlPerformScript, SqlBinary enable for PGSQL)
TheIDE
Highlighting of .sch and .sql files
Find in files now has separate output console
Select package dialog 'All' option replaced by the selection of more understandable options, main packages now displayed bold
1205 (18 May 2009)
Library
New GUI multithreading architecture
TheIDE
Layout designer: option to resize dialog without springs
No more confusing switches of .lay, .iml to text mode (instead designer)
One more redesign of code navigator
Ctrl+Click onto symbol jumps to its definition
Package selector now shows the nest
1126 (5 May 2009)
Library
Change in SetDateFilter format, cleanup in related docs
Improved translation docs
Added runtime check for serializing RichValue with missing Register
Docking: CreateDockable<T> now returns type T
mrjt's MultiList now merged into ColumnList
TabBar: Tab Stacking and sorting added. Other changes.
Drawing refactored
TheIDE
Refactored CodeNavigator, search symbol (Ctrl+Q) now copies current id search field
1096 (26 April 2009)
Library
Painter: High quality, "SVG/PDF strength" software renderer
HttpClient improvements
JPGRaster now can read EXIF thumbnails
ODBC SQL interface
Microsoft SQL Server interface improved
Multithreading: ConditionVarable and LazyUpdate classes
LocalProcess class
RichText: EncodeHTML support for superscript, subscript, strikeout
and smallcaps
Mersenne twister based Random
TheIDE
Win32 .pdb debugger:
shows tooltip with values of variables
improved displaying of strings in pdb debugger
watches are remembered, Clear all watches function, Drag&Drop to watches
Packages can be sorted by name
Packages now can be colored and assigned bold/italic font
Package files underlined if recently changed
SVN support, SVN history of file
Compare with file, compare with patch
Assist++
New heurestic error recovery of C++ parser
New code navigator bar
Position of Assist parameter info improved
Context go to (Alt+J) now jumps to layout designer when invoked on layout class template
Topic++ finished; documentation now visible (and editable) as tooltip annotations of sources
Abbreviations: e.g. type "i" and press Ctrl+[.] to expand it to if() ;
Icon editor: free angle rotation
Insert" color or U++ specific includes (.lay, .iml, .tpp group)
Print command (of source files)
Editor: ToUpper/Lower/InitCaps/SwapCase
2008.1 (28 July 2008)
Library
New very fast String/WString implementation
New high performance (mostly) lock-free heap allocator,
Improved multithreading support
CoWork multicore loop paralelization class
Unified Drag&Drop support
PostgreSQL support
Win64 support (except debugger)
QuickTabs class
HeaderCtrl can now move (reorganize) tabs
ArrayCtrl automated column sorting
Chameleon Look&feel improvements under GTK and Vista
TheIDE
Topic++ documentation editor now integrated into main window
Help Help integrated into main window
2007.1 (11 April 2007)
Library
Pdf export and printing in Linux finished
Raster image infrastructure completely reworked
"Chameleon" skinning system which allows both native look of U++ applications across platforms AND custom skins to be designed/used.
New useful widgets: GridCtrl, CalendarCtrl and DateTimeCtrl
Sql expressions are now adjusted before being executed on particular RDBMS target
Library moved to Upp namespace
FreeBSD port is now regular part of U++
Experimental PocketPC support was introduced
Library fixed to support ARM and PowerPC CPUs
A lot of new documentation and tutorials
Many minor improvements and bug fixes
TheIDE
New Icon designer (supports alpha channel and has tools to produce antialiased icons)
Distribution
FreeBSD port available
Ubuntu .deb packages released
605 (15 May 2006)
Library
XML parser refinements (faster, easier to use)
TheIDE
"Hydra build" - multi-CPU building
further Assist++ improvements
Distribution
new Windows installer - download size reduced by 50%
602 (28 February 2006)
Library
New Report package.
Fixed multi-threading issues in Linux.
TheIDE
Assist++
Fixed many C++ parsing issues and optimized
"Virtual methods" tool
"THISBACKs" tool
"Generate code.." tool of Layout designer able to generate useful code snippets
"Show opposite" (Alt+O) switches .h/.cpp files
"Complete identifier" (Alt+,) - based on identifiers in the file (no C++ parsing intelligence)
Fixed support for global variables in PDB debugger
Package organizer redesigned, "When" conditions now support logical operators, "uses" can be conditional
New fine-grained optimization system with "Optimize for speed" / "Optimize for size" / "Optimal" (only explicitly marked files are optimized for speed) modes
New TheIDE command-line mode, including compilation (via umk utility)
511 (20 November 2005)
U++ Library
New XML support in Core
Linux/AMD64 is now supported
X11 fixes improve stability with less common window managers, input method problem fixed as well
New kind of callbacks - pteback - to avoid dangling callback situation problem
Sqlite was added as source-based plugin together with U++ adapter
A lot of new documentation
TheIDE
File tabs are redesigned
Source editor has now scripting language
"Calculator" console
Layout of IDE now redesigned, bottom pane now contains browser/console/debugger/calculator switched by tabs
ASSIST++:
Improved C++ code analysis now able to resolve class hierarchy issues, code browser now displays base classes, methods, virtual methods, overrides etc...
New assist function now suggests list of methods and attributes after typing '->' or '.' or after Ctrl+Space.
Navigate in the file and Navigate functions simplify moving to symbol with specified name
Copy definition/declaration is able to convert method declaration (inside class declaration) to definition and back (works with more than one method as well)
Goto definition/declaration moves between definitions and declarations of current method
Distribution
U++/Win now ships with SDL library and contains nice SDLExample as well as SDL project templates.
|