| [ Return to Articles | Show Comments | Submit Comment ]
Article #825: What are the Versions of FLTK?
Created at 12:48 May 29, 2008 by engelsman
Updated on April 29, 2025 for FLTK 1.4.3 and FLTK 1.5
Introduction
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
FLTK 1.4 (stable, currently 1.4.3).
Development of FLTK 1.5 was started in March 2025 but 1.5 is not yet
production ready.
Details of FLTK 1.4, 1.3, and other versions appear below, and a graph
showing monthly commit activity, or current lack of activity, is shown
at the bottom.
Current Stable and Development Versions
- FLTK 1.5 [active development, no release yet].
See below for more info.
- FLTK 1.4.3 [released April 29, 2025]
(View release notes)
This version is recommended for new programs.
FLTK 1.4 is a big step forward, adding new widgets and support of Wayland
on Linux and FreeBSD systems.
Work on FLTK 1.4 began 2016 because it was necessary to break the FLTK 1.3
ABI in order to fix some long outstanding problems and to add new features.
Resetting the ABI also allowed the removal of 200+ areas of conditional
compilation involving ABI guards, greatly simplifying the code.
FLTK 1.4 boasts a completely new abstract device driver class hierarchy to
isolate platform specific code in one place instead of using #ifdef
everywhere, and to make it easier to port to new platforms.
The build system has moved to CMake for generating IDE configurations (Visual Studio,
Xcode, and other IDE's) and Makefiles.
Autotools (configure/make) are still supported but are no longer available
in the current development version (1.5).
Previous Stable Versions
- FLTK 1.3.11 [released Feb. 05, 2025]
(View release notes)
FLTK 1.3 is basically FLTK 1.1.10's API with extra features and better support
for macOS (High Sierra .. Sequoia on the new Apple Silicon M1 .. M3 processor)
and high resolution displays.
These new features include: new Fl_Copy_Surface, Fl_Image_Surface, Fl_Tree,
Fl_Table, and Fl_Native_File_Chooser widgets; additional methods for dealing
with clipboard and system event notifications; printing support; and a new
progamming manual generated from the code using Doxygen.
FLTK 1.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 and use standard Latin, Greek and Cyrillic
characters are handled out-of-the-box, and simple right-to-left rendering
works, but could be improved.
FLTK 1.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.
All FLTK 1.3 versions use the same API as FLTK 1.1.10 and those features which
change the ABI between versions are wrapped in so-called ABI guards in the
library code. The appropriate ABI version can be specified with 'configure',
CMake, or by editing a supplied file when using the bundled IDE projects.
Most code written for FLTK 1.3.0 should work without further modification,
but old code written for FLTK 1.1.10 will need to be recompiled to work with FLTK 1.3.
See documentation in README.abi-version.txt for more details.
Development of FLTK 1.3 has stopped. All new development and bug fixing is
focused on FLTK 1.4.x (only bug fixes) and FLTK 1.5 (development).
NOTE: IDE configurations may be out of date for newer IDE versions, and CMake support is experimental.
- 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 has stopped, even for urgent bug fixes. Please update to FLTK 1.3.x or FLTK 1.4.x.
- FLTK 1.0.11 [released 24th October 2001]
FLTK 1.0.11 is ancient history. Use one of the more modern versions!
Active Development Version
- FLTK 1.5 [active development, no release yet]
Work on FLTK 1.5 began in March 2025 after the release of FLTK 1.4.2. At this time FLTK 1.4 switched to maintenance mode (only severe bug fixes).
Plans for FLTK 1.5 include (this list is incomplete):
- [DONE] remove autotools/configure/Makefiles to avoid maintenance of two build systems
- [DONE] allow more modern C++ code (currently C++11)
- [TBD] add touchscreen support
- [TBD] add tablet/pen support
- [TBD] easier "Scheme" integration (details to follow)
- [TBD] add theming support (dark, light, other "themes")
- etc.
Discontinued Versions
- FLTK 1.2 [unsupported / dead]
This was FLTK 1.1.x with UTF-8 and printer support backported from FLTK-2 by O'ksi'D and Roman Kantor.
FLTK 1.2 was rendered obsolete with the release of FLTK 1.3.2.
- FLTK 2.0 (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. The main thrust of FLTK-2 development ended in 2008, with no bug fixes since 2011.
- FLTK-3 [experimental / dormant]
Matthias Melcher had a vision for "unforking" FLTK-1 and FLTK-2,
and FLTK-3 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. There has been no FLTK-3 development since 2012 and
there are no further development plans for this project.
Monthly Commit Activity
The following commit activity graph is rebuilt regularly (every 15 minutes):
Click on the image to view it in full size with interactive counter display (opens in a new tab/window).
[ Listing ]
[ Submit Comment ]From ArneBab, 06:40 Jul 31, 2017 (score=3)
Short note: The "specific goals" in the documentation still reference 2.0 as the new structure.
(no criticism here, just a bug report)
[ Reply ] From tomsmeding, 23:44 Mar 03, 2017 (score=3)
Thanks a lot for this post. If your site backend allows it, I'd strongly recommend you to make this post "sticky" and make it stay on the front page, preferably at the top. For users exploring FLTK, it's vital that they know where they should even start reading documentation.
[ Reply ]
From AlbrechtS, 10:04 Mar 30, 2017 (score=3)
> If your site backend allows it, I'd strongly recommend
> you to make this post "sticky" and make it stay on the front page
OK, I'll see if I can do that. [EDIT: Done Mar 30 2017]
Note: this comment was posted by Greg, not me (Albrecht). Confusing author info because I edited (changed the syntax of) the comment. Sorry for the confusion.
[ Reply ]
|
| |