Article #825: What are the Versions of FLTK?

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  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 12: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.8 (stable) or FLTK-1.4.x (development).

Details of FLTK-1.3.8, 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.8 [released 20th Nov 2021]

    FLTK-1.3.8 is basically FLTK-1.1.10's API with extra features and better support for macOS (High Sierra .. Big Sur on the new Apple Silicon (M1) 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; a device abstraction layer; and a new progamming manual generated from the code using Doxygen.

    FLTK-1.3.8 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.8 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.8 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.8. See the documentation in README.abi-version.txt for more details.

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

    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.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.

    NOTE: Doxygen comments should be up-to-date, but READMEs and peripheral documentation might be out of date! The build system is moving to CMake for generating IDE configurations and Makefiles.

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 2011.

  • FLTK-3.x [experimental / dormant]

    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 and there are no further development plans for this project.

Monthly Commit Activity

The following commit activity graph is rebuilt regularly (every 15 minutes):

FLTK Monthly Commit Activity

Click on the image to view it in full size with interactive counter display (opens in a new tab/window).

Listing ]


Comments

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 greg.ercolano, 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]

Reply ]
 
 

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