Article #825: What are the Versions of FLTK?

  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 Home  |  Articles & FAQs  |  Bugs & Features  |  Documentation  |  Download  |  Screenshots  ]
 

Return to Articles | Show Comments | Submit Comment ]

Article #825: What are the Versions of FLTK?

Created at 15:48 May 29, 2008 by engelsman

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 either FLTK-1.3.4 (stable) or FLTK-1.4.x (development).

Details of FLTK-1.3.4, FLTK-1.4.x and other versions appear below, and a graph showing monthly commit activity, or current lack of activity, is shown at the bottom.

Stable Versions

  • FLTK-1.3.4 [released 11th November 2016]

    FLTK-1.3.4 is basically FLTK-1.1.10's API with extra features and better support for MacOSX and high resolution displays. 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.4 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.4 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.

    FLTK-1.3.4 and all previous 1.3.x 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.x 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.4. See the documentation in README.abi-version.txt for more details.

    Development of FLTK-1.3.4 has now stopped. All new development and bug fixing is focused on FLTK-1.4.x.

  • 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. Please update to FLTK-1.3.4 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!

Development Versions

  • FLTK-1.4.x [under active development]

    Work on FLTK-1.4.x began at the start of 2016 because it was necessary to break the FLTK-1.3.x 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.x already 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.

Discontinued Versions

  • 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.2 was rendered obsolete with the release of FLTK-1.3.2.

  • 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. The main thrust of FLTK-2 development ended in 2008, with no bug fixes since 2010.

  • 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. There has been no FLTK-3 development since 2012.

Monthly Commit Activity

Monthly Commit Activity

[Update 11/21/16: The above commit activity graph is now rebuilt weekly at 4am every Friday morning, right after the weekly fltk snapshots. -erco] [ Listing ]


Comments

Submit Comment ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2015 by Bill Spitzak and others. This project is hosted by Seriss Corporation. Please report site problems to 'erco@seriss.com'.