The Library
Help/Info
Current Release









Last Modified:
Nov 10, 2008

Release notes

Release 17.12

Release date: Nov 10, 2008
Major Changes in this Release:
New Stuff:
   - Added user settable styles to most of the gui widgets
   - Added the diagm(), svd2() and svd3() matrix functions
   - Added the thread_pool object

Non-Backwards Compatible Changes:
   - Removed the arrow_button widget and moved its functionality into the 
     button widget. 
   - Renamed the dragable class to draggable 
   - Removed the confusing and unnecessary hidden bool argument to the 
     gui widget style drawing functions.
   - Changed some of the events that are about the mouse leaving a widget so 
     that they still trigger even if the widget has been disabled or hidden.  

Bug fixes:
   - Added some missing mutex locks to the scroll_bar widget
   - Fixed a bug in the fill_gradient_rounded() function. It didn't always
     draw the entire rectangle.
   - Fixed a compile time bug in the pinv() function.  It didn't compile 
     when used on statically sized matrices when they weren't square.

Other:
   - The member_function_pointer object now never calls new or delete. 
     So it is safe to use in a real time environment.


Release 17.11

Release date: Oct 20, 2008
Major Changes in this Release:
New Stuff:
   - Added the sort_columns() and rsort_columns() functions
   - Added the vector_normalizer object
   - Added the normalized_function object.
   - Added a tensor_product() function for the matrix object.

Non-Backwards Compatible Changes:

Bug fixes:
   - Made it so that the gui event handler thread isn't created at all 
     unless some part of an application calls some of the gui_core code. 
     In the previous release the event handler thread was executed
     briefly during program termination and could cause problems if no
     windowing environment was available.
   - Fixed an #include statement in the matrix utilities so that it works 
     even if you don't specify an include path argument to your compiler.

Other:


Release 17.10

Release date: Oct 09, 2008
Major Changes in this Release:
New Stuff:
   - Added a thread safe shared pointer object
   - Added the popup_menu_region widget.

Non-Backwards Compatible Changes:
   - The on_wheel_up() and on_wheel_down() gui events now take an unsigned long
     argument.  
   - Removed the register_program_ending_handler() function from the threading
     API and also changed the dlib thread pool so that it no longer causes
     a terminating program to wait for any outstanding threads to finish
     before allowing the application to end.
   - Changed the serialization format of the linearly_independent_subset_finder
     class.
   - Changed all the font pointers in the gui API's interfaces
     to shared_ptr_thread_safe objects.

Bug fixes:
   - Made the kkmeans class actually use the min_change parameter.
   - Fixed a bug in the linearly_independent_subset_finder object.  Also
     added a way to set a minimum tolerance.  
   - Fixed a bug in the scrollable_region widget that caused it to scroll in an
     unpleasant way when the horizontal and vertical scroll increments weren't 
     set to the same value.
   - Made one of the arguments to font::draw_string() not be a reference because
     some versions of gcc don't end up doing the right thing when -O3 is 
     supplied.
   - Fixed a bug in the covariance() function that prevented it from compiling
     sometimes.

Other:
   - Changed the gui core code around so that it should be safe to make window 
     objects at the global scope.
   - Added more control over how the scrollable_region scrolls its region.
     You can now adjust how much it scrolls when the mouse wheel is scrolled 
     as well as enabling scrolling via a mouse drag.
   - Modified the library so that it compiles with the Intel compiler.
   - Added some example programs that use the relevance vector machine


Release 17.9

Release date: Sep 06, 2008
Major Changes in this Release:
New Stuff:

Non-Backwards Compatible Changes:

Bug fixes:
   - Fixed a bug in the tooltip widget
   - Fixed the cmake option to toggle the ENABLE_ASSERTS macro
   - Fixed some bugs in the rvm
   - Fixed the serialization code for the kkmeans object so that it actually 
     works
   - Fixed a bug that can trigger when the thread_specific_data object is 
     destructed
   - Fixed a bug in the directory navigation gui.  If you tried to go
     into a drive on windows that wasn't mounted you got an error.
     This is now fixed.

Other:
   - Made the dir_nav stuff work with std::vector and dlib::std_vector_c 
     as well as dlib::queue objects.
   - Generally cleaned up a bunch of things


Release 17.8

Release date: Aug 14, 2008
Major Changes in this Release:
New Stuff:
   - Added relevance vector machine regression and classification support.
   - Added the cross_validate_trainer_threaded() function
   - Added the length and length_squared matrix functions.

Non-Backwards Compatible Changes:

Bug fixes:
   - Changed gui code a little so that windows don't popup in funny 
     places when used with the cygwin X windows system.

Other:
   - Made it easier to use the scoped_ptr with the TCP connection object
   - Optimized the matrix object a little


Release 17.7

Release date: Jul 25, 2008
Major Changes in this Release:
New Stuff:
   - Machine Learning
      - Added the ability to compare kcentroid objects to each other
      - Added the rank_features() function
      - Added the distance_function object
      - Added the reduced_decision_function_trainer object and 
        reduced() function
      - Added the reduced_decision_function_trainer2 object and 
        reduced2() function
      - Added a radial basis function network trainer
      - Added the linearly_independent_subset_finder object
      - Added the sigmoid_kernel
   - Matrix Utilities
      - Added the inv_upper_triangular() and inv_upper_triangular()
        functions.

Non-Backwards Compatible Changes:
   - Refactored a bunch of the kernel learning code into a much cleaner form.
     But this does change the interface to all the training functions.  

Bug fixes:
   - Fixed a bug in the min and max calculation in the running_stats object
   - Removed a bug in the sum() and variance() functions that
     caused them to seg fault when they were used on certain 
     matrix of matrix objects.
   - Added a missing check for division by zero to the conjugate gradient
     optimization functions.
   - Added some missing member variables to the .swap and serialization 
     functions for the kcentroid object.  So now they should work right.

Other:
   - Added an option to the cmake file to toggle the DLIB_ASSERT macro
   - Added an option to the cmake file to toggle the dlib stack trace macros
   - Made the library compile in Cygwin


Release 17.6

Release date: Jun 22, 2008
Major Changes in this Release:
New Stuff:
   - Merged in Keita Mochizuki's unicode patches to the GUI components.  So
     the dlib GUI now has better unicode support.
   - Added the remove_row and remove_col matrix functions.  Also made all
     three of the above functions capable of taking arguments at run time 
     as well as compile time.
   - Added the ability to cap the number of dictionary vectors used by the krls
     and kcentroid object at a user specified number.   
   - Added the pick_initial_centers() function
   - Added the running_stats object

Non-Backwards Compatible Changes:
   - Changed the interface to the krls and kcentroid objects somewhat.
   - All of the style objects in the GUI part of the library now use 
     dlib::ustring instead of std::string.  This only matters to you if 
     you have made your own style objects.
   - Changed the serialization format of the krls, kcentroid, and
     directed_graph_drawer objects.  Note that is also means that the
     files saved by previous versions of the bayes_net_gui_ex program
     won't load with the current version.

Bug fixes:
   - Fixed an aliasing bug in the set_subm(), set_rowm(), and set_colm() 
     functions.  It was possible that you could get incorrect results
     if you used these functions to copy one part of a matrix to another
     part of the same matrix if the two areas overlapped.
   - Fixed a minor numerical error in the krls code so now it gets slightly 
     better results.

Other:
   - Made the types generated by the matrix operations a lot shorter.  This
     avoids some compiler warnings from visual studio and even some potential
     internal compiler errors in some instances.


Release 17.5

Release date: Jun 2, 2008
Major Changes in this Release:
New Stuff:
   - Added some macros that allow dlib to create a stack trace
   - Added the wrap_function and is_function templates.
   - Added two new events to the text_field object.  One for detecting when the 
     user hits enter and another for detecting when input focus is lost.
   - Machine Learning
      - Added a kernel based centroid estimator/novelty detector
      - Added a kernel based k-means clustering algorithm
   - Numerical
      - Added an identity_matrix() function that can take a runtime defined size.
      - Added a bunch of unconstrained optimization stuff to the library. 
        It now has a conjugate gradient optimization algorithm as well as
        a quasi-newton algorithm.
      - Added the set_subm, set_rowm, and set_colm functions.

Non-Backwards Compatible Changes:
   - In the krls object:  Added a requires clause to the set_tolerance() member 
     function and renamed clear() to clear_dictionary().

Bug fixes:
   - Fixed a bug in the requires clause of the subm() function.  It was 
     more restrictive than it should have been.

Other:
   - Added example programs for the krls object as well as the new
     kcentroid and kkmeans objects.


Release 17.4

Release date: May 12, 2008
Major Changes in this Release:
New Stuff:
   - Added an implementation of the kernel recursive least squares algorithm

Non-Backwards Compatible Changes:
   - Broke backwards compatibility in the directed_graph_drawer's serialization
     format when I fixed the bug below.  

Bug fixes:
   - Fixed two bugs in the directed_graph_drawer widget.  First, it sometimes 
     threw a dlib::fatal_error due to a race condition.  Second, the color of 
     the nodes wasn't being serialized when save_graph() was called.  
   - Made vector_to_matrix() work for std::vector objects that have non-default 
     allocators.

Other:
   - Added some stuff to make people get a really obvious error message
     when they set up the include path incorrectly.


Release 17.3

Release date: Apr 28, 2008
Major Changes in this Release:
New Stuff:
   - Added the vector_to_matrix() function.
   - Added a cholesky_decomposition() function.
   - Added the toggle_button GUI widget
      - Added a default toggle button style as well as check box and 
        radio button styles.
   - Added a single click event to list_box
   - Added a save_file_box() and open_existing_file_box() function.  

Non-Backwards Compatible Changes:
   - Changed the check_box and radio_button widgets to be specializations of 
     the new toggle_button object.  This is a nearly backwards compatible 
     change except that the events registered to check_box and radio_button 
     clicks must now take the form void event(toggle_button&) or 
     void event(void) instead of the previous void event(check_box&) and 
     void event(radio_button&).
   - Removed the is_mouse_over bool from the button_style::draw_button()
     function.

Bug fixes:
   - Fixed a compiler error in mingw.
   - Changed the preprocessor checks for the wchar_t overload of 
     is_built_in_scalar_type so that it works properly with visual studio.

Other:
   - Added a Bayesian Network GUI that allows you to create a network
     and serialize it to disk.



Old Release Notes