# Part II. API Breaks

Devhelp is a quite old piece of software (created in 2001), and as every software, the code evolves during its lifetime. So there are sometimes API breaks. We try to not break applications depending on the Devhelp API. But if we see that a certain API is used nowhere else than the Devhelp application itself (or is dead code), we don't hesitate to break the API to improve the code.

Currently we try to not break Anjuta and gnome-builder. If your application is not listed and depends on the Devhelp API and is Free Software, please speak up.

## 3.24 -> 3.25.1

- All deprecated APIs have been removed.

- dh-error.h is now private.

- The `DhApp`, `DhAssistant` and `DhWindow` classes are now private. `DhApp` is a subclass of `GtkApplication`, and an application can have only one `GtkApplication` instance, so as-is `DhApp` didn't make sense in the library (what if two different libraries have both a subclass of `GtkApplication`?). Since `DhAssistant` and `DhWindow` depend on `DhApp`, they are now also private.

- The `DhLanguage` class is now private, it's currently used only internally by DhBookManager.

- Due to DhBookManager being now a singleton, there has been the following API changes:

  - `dh_assistant_view_set_book_manager()` has been removed.

  - `dh_keyword_model_set_words()` has been removed.

  - The `DhBookTree:book-manager` property has been removed.

  - API break for dh_book_tree_new().

  - The `DhSidebar:book-manager` property has been removed.

  - The `book_manager` parameter of dh_sidebar_new() is now deprecated.

## 3.25.1 -> 3.25.2

- The `page` parameter of dh_link_new() has been removed because it was broken in `dh-parser.c`. The `book` parameter has also been moved, to group related parameters together.

- The `dh_link_get_page_name()` function has been removed because it was broken and used nowhere.

- The `dh_link_get_type_as_string()` function (which took a DhLink parameter) has been removed, it has been replaced by dh_link_type_to_string() which takes a DhLinkType parameter.

## 3.26.0 -> 3.27.1

- dh_link_new() has been split in two, with dh_link_new_book() to create a DhLink of type DH_LINK_TYPE_BOOK.

- The `dh_link_get_file_name()` function has been removed.

- The `dh_book_get_path()` function has been replaced by dh_book_get_index_file().

- The dh_book_new() constructor now takes a `GFile` argument instead of a path.

- `dh_book_get_name()` has been renamed to dh_book_get_id().

- `dh_book_cmp_by_name()` has been renamed to dh_book_cmp_by_id().

- `dh_link_get_book_name()` has been renamed to dh_link_get_book_title().

- `dh_book_get_keywords()` has been renamed to dh_book_get_links().

- The ownership transfer of the return values of dh_book_tree_get_selected_book() and `dh_sidebar_get_selected_book()` have been changed from (transfer none) to (transfer full).

## 3.27.1 -> 3.27.2

- `dh_book_cmp_by_path()` has been removed (dead code).

- The `DhBookManager::language-enabled` and `DhBookManager::language-disabled` signals have been removed (dead code).

- DhSidebar is now a subclass of GtkGrid, not GtkBox.

- `dh_sidebar_get_selected_book()` has been removed (it was used only inside DhSidebar).

- `dh_book_get_completions()` has been replaced by dh_book_get_completion().