The Library
Help/Info
Current Release
Sourceforge











Last Modified:
Aug 14, 2008

Release notes

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

Release 17.2

Release date: Apr 21, 2008
Major Changes in this Release:
New Stuff:
   - GUI Related
      - Added the scrollable_region widget
      - Added the text_grid widget
      - Added an event to the text_field so you can tell when the
        user modifies it.
      - Added the fit_to_contents() function to the tabbed_display 
        widget.
   - Bayesian Network Related
      - Added the node_first_parent_assignment(), node_next_parent_assignment(), 
        and node_cpt_filled_out() functions.

Non-Backwards Compatible Changes:
   - Reverted the change in 17.0 where I made drawable::lastx and 
     drawable::lasty not match the current location of the mouse inside
     the on_mouse_move() event.  I changed this back to how it was before,
     so now lastx and lasty represent the most current record of where
     the mouse is in *all* events.
   - Changed the functions that control text color in the label and text_field
     widgets to use rgb_pixel objects.  Also added a function to set the
     background color of a text_field.

Bug fixes:
   - Fixed a bug in the bayesian_network_join_tree object that caused it to
     compute incorrect results for some networks.
   - GUI Related
      - Fixed a minor bug in the cursor drawing of the text_field
        gui widget.
      - Fixed a bug in the compute_cursor_rect() function.  It would return an
        incorrectly positioned rectangle for 0 length strings.
      - Changed the way wchar_t is handled in the serialize.h file.  Now
        everything should compile correctly in visual studio regardless of how
        you set the /Zc:wchar_t compiler option.
      - Fixed a bug in the menu_bar widget.  One of the members wasn't being 
        initialized when it needed to be.
      - Fixed a bug in the tabbed_display where it didn't redraw itself
        correctly after it was moved by set_pos()

Other:
   - Changed the xml parser so that it counts line numbers
     from the start of the input stream instead of from the
     root tag.
   - Changed the xml parser so that you will only get the fatal_error
     event once if it occurs. 

Release 17.1

Release date: Apr 13, 2008
Major Changes in this Release:
New Stuff:
   - Added a zoomable_region widget
   - Added a directed_graph_drawer widget

Non-Backwards Compatible Changes:
   - Changed the first_pixel argument of the draw_string() function 
     to be a rectangle like all the other draw functions now use.

Bug fixes:
   - Fixed a bug in the tooltip widget that was triggered when calling
     its member functions without calling set_tooltip_text().  This also 
     fixed a bug in the button object that triggered when calling some button
     functions that referenced the tooltip widget.
   - Fixed a problem in the draw_circle and draw_solid_circle functions.
     They didn't draw themselves quite correctly in all cases.

Other:

Release 17.0

Release date: Apr 07, 2008
Major Changes in this Release:
New Stuff:
  - Added a png_loader object
  - GUI related
    - Added a popup_menu widget
    - Added a menu_bar widget
    - Added a tooltip widget
    - Added a user selectable style to the gui button.
    - Added the draw_rounded_rectangle() and fill_gradient_rounded() functions
    - Added the mouse_over_event object to the base_widgets and made the 
      button_action inherit from it.
    - Added the drawable::next_free_user_event_number() function 
  - matrix and geometry:
    - Added a size() function to matrix_exp and matrix_ref objects.
    - Added a class that represents 2D points 
    - Added the following matrix functions:
      - squared(), cubed(), get_rect(), a subm() function that takes 
        rectangles, and normlize() 
    - Added the following rectangle functions:
      - area(), centered_rect(), translate_rect(), move_rect(), resize_rect(),
        resize_rect_height(), resize_rect_width(), and nearest_point() 

Non-Backwards Compatible Changes:
  - Renamed atom() to array_to_matrix()
  - Moved the rectangle object from the gui_core into a new geometry folder  
    (only matters if you were directly including the rectangle file)
  - Moved the vector object into the geometry folder.  Also removed the kernel_1a
    stuff.  So there is now only one possible vector implementation.
  - Changed the default position for a rectangle to (0,0) instead of (1,1)
  - Added edge data to the directed_graph.  This breaks backwards compatibility 
    with the previous serialization format for directed_graphs.
  - GUI related:
    - Changed the base_window::on_keydown event signature so that it now
      reports more keyboard modifier keys (e.g. alt)
    - Made the functions for drawing on canvas objects take points and pixels 
      instead of just a bunch of integers.  Also changed the order of the
      arguments so that the canvas comes first, followed by the location
      to draw on, then what to draw.
    - Moved the canvas drawing functions into the gui_widgets/canvas_drawing.h 
      file.
    - Modified the drawable_window so that the drawable::lastx and drawable::lasty
      fields are updated after calls to on_mouse_move.  This way the x and y that
      go into the on_mouse_move actually tell you something.

Bug fixes:
  - Fixed a bug in the floating point serialization code.  It 
    didn't handle NaN or infinities correctly.
  - Fixed a bug in the win32 version of the gui_core component.  It was 
    possible that calling set_size(), set_pos(), or set_title() could cause 
    the program to deadlock.
  - Made the load_bmp() function more robust in the face of weirdly 
    written BMP files.
  - Modified the draw_circle() and draw_solid_circle() functions so that they
    only touch each canvas pixel once.  This avoids messing up alpha blending
    if an rgb_alpha_pixel is used.  

Other:
  - Removed the old win32 only gui code in the dlib/gui folder. 
  - Changed the default GUI font to a nicer Sans Serif font 

Release 16.5

Release date: Mar 04, 2008
Major Changes in this Release:
New Stuff:
   - Added another constructor to the thread_function object.  
     Now it can take proper function objects as well as normal function
     pointers.
   - Added the probabilistic_decision_function object and svm_nu_train_prob() 
     function.

Non-Backwards Compatible Changes:
   - Changed the svm train functions so that the cache_size argument
     now measures the max number of megabytes of memory to use rather
     than number of kernel matrix rows to cache.  It's default
     value is now 200MB.
   - changed the type typedef in the SVM kernel function objects to
     be named sample_type instead of type. 

Bug fixes:
   - Fixed a bug in the trim, rtrim, and ltrim functions.  They
     didn't return empty strings when the input string contained all
     trim characters.
   - Fixed a bug in the decision_function's copy constructor

Other:
   - Added an optimization to the working set selection for the svm training code.
     Now the algorithm will prefer to select indices that are in the kernel 
     matrix cache when possible.
   - Fixed a problem with the chm documentation file where many of the links
     didn't work.
   - Made the support vector functions capable of operating with floats, doubles,
     and long doubles instead of just the double type.



Old Release Notes