[ Return to Articles | Show Comments | Submit Comment ]
Article #825: What are the Versions of FLTK?
Created at 15:48 May 29, 2008 by engelsman
Last modified at 03:02 Aug 17, 2016
When new users discover FLTK, they are immediately confronted with the choice of which version to use, and because they don't know all of the history, they mistakenly assume that they should download the higher numbered versions. To make life simple, new users should only choose either FLTK-1.3.3 (stable) or FLTK-1.3.x (development).
Full details of FLTK-1.3.3, FLTK-1.3.x and other versions appear below, and a graph showing monthly commit activity, or current lack of activity, is shown at the bottom.
- FLTK-1.3.3 [released 3rd November 2014]
FLTK-1.3.3 is basically FLTK-1.1.10 with extra features. These new features include: new Fl_Copy_Surface, Fl_Image_Surface, Fl_Tree, Fl_Table and Fl_Native_Filechooser widgets; additional methods for dealing with clipboard and system event notifications; printing support; a device abstraction layer; and a new progamming manual generated from the code using Doxygen.
FLTK-1.3.3 includes full UTF-8 Unicode support and can render the glyphs for any UTF-8 supported language if the correct fonts are also installed. Languages which are rendered left-to-right (such as Latin, Greek and Cyrillic) are handled out-of-the-box, and simple right-to-left rendering works, but could be improved.
FLTK-1.3.3 does not include a text rendering engine for composing complex scripts. Users of languages requiring composing characters (such as Arabic, Hebrew, and the Indic scripts) will need to work with their own text layout engines using ICU or Pango or whatever.
To maintain ABI-compatibility with previous FLTK-1.3.x releases, not all of the new features in FLTK-1.3.3 are available by default. You will need to explicitly #define FLTK_ABI_VERSION appropriately and recompile if you want to uses these new features in your own application.
FLTK-1.3.3 uses the same API as FLTK-1.1.10, but a different ABI. Old code written for FLTK-1.1.10 will need to be recompiled with FLTK-1.3.3, and most should work without any further modification.
Development of FLTK-1.3.3 continues under the FLTK-1.3.x branch.
- FLTK-1.1.10 [released 27th December 2009]
This was previously the most established and stable version, mainly because the lead developers had a lot of commercial code that depended on it. However this also meant that the programming interface and the data structures could not really be changed to support much-needed new features. FLTK-1.1.x uses the current locale for character rendering and is therefore somewhat limited to "western" locales. If you target the US or other countries that use latin character sets, this is probably not an issue.
Development of FLTK-1.1.10 has stopped, even for urgent bug fixes. All new development and bug maintenance is focused on FLTK-1.3.x.
- FLTK-1.0.11 [released 24th October 2001]
FLTK-1.0.11 is ancient history. Use one of the more modern versions!
- FLTK-1.3.x [under active development]
Most of the original goals for FLTK-1.3.0, such as UTF-8 Unicode support, etc. have been achieved, so FLTK-1.3.x will concentrate on providing bug fixes, and working through the feature requests.
- FLTK-1.4 [future work]
FLTK-1.4 is a placeholder for feature requests and future work that go beyond the scope of immediate features required for FLTK-1.3.x. Small numbers of 1.4 feature requests will be chosen for each new release of FLTK-1.3.x [and then FLTK-3.x] to keep things manageable so that the developers can "eat the elephant one burger at a time" :-)
- FLTK-1.2 [unsupported / dead]
This was FLTK-1.1.x with UTF-8 and printer support backported from FLTK-2.0 by O'ksi'D and Roman Kantor.
FLTK-1.3.2 offered similar features and rendered FLTK-1.2 obsolete.
- FLTK-2.0.x-alpha [experimental / dormant]
Bill Spitzak started this complete redesign and rewrite of FLTK-1 in order to support a new widget hierarchy, a multi-device drawing model, and theming. The new programming interface was much cleaner, using UTF-8 and C++ namespaces throughout, but it was incompatible with FLTK-1, so users with large projects were reluctant to change.
FLTK-2 development first lost momentum when Bill was distracted by other commitments, and again later when it became clear that most FLTK-1.1.x users wanted to continue with FLTK-1.3.x rather than rewrite their code bases to use FLTK-2 and its new API. Note too that there has been almost no FLTK-2 development since FLTK-3 was proposed as the way forward to bring together FLTK-1.3 and FLTK-2.
- FLTK-3.x [experimental / dormant]
In A Proposal for FLTK-3, Matthias Melcher had a vision for "unforking" FLTK1 and FLTK2, and FLTK-3.x made rapid progress from the initial concept stage to the actual development of compatibility layers over a central core. All this was achieved quickly using some fiendishly complicated macros.
Matt, the chief architect and visionary behind FLTK-3, has also been concentrating on other interests for a while, meaning that there has been a temporary hiatus in FLTK-3 development.
Monthly Commit Activity
PS. To keep this article on the first screen of the Articles&FAQs page, this dummy postscript was updated on 2016-08-17.
[ Listing ]
[ Submit Comment ]