[gnome-builder] libide: use IDE_AVAILABLE_IN_ALL on public ABI



commit 35bf7bf1f7a651d2c0b34b2f58a5ce9c6e562c26
Author: Christian Hergert <chergert redhat com>
Date:   Tue Nov 7 22:46:25 2017 -0800

    libide: use IDE_AVAILABLE_IN_ALL on public ABI
    
    This specifies what functions are to be exported when linking libide-1.0
    instead of using a linker script. This allows us to be more specific in
    what ABI ends up in the final library.
    
    We still aren't an ABI-stable library, but this start's getting us closer
    to that future.

 src/libide/application/ide-application-addin.h     |    4 ++
 src/libide/application/ide-application-tool.h      |    4 ++
 src/libide/application/ide-application.h           |   14 +++++
 src/libide/buffers/ide-buffer-addin.h              |    5 ++
 src/libide/buffers/ide-buffer-change-monitor.h     |    5 ++
 src/libide/buffers/ide-buffer-manager.h            |   20 +++++++
 src/libide/buffers/ide-buffer.h                    |   37 +++++++++++++
 src/libide/buffers/ide-unsaved-file.h              |   10 ++++
 src/libide/buffers/ide-unsaved-files.h             |   13 +++++
 .../ide-buildconfig-configuration-provider.h       |    3 +
 .../buildconfig/ide-buildconfig-configuration.h    |    6 ++
 src/libide/buildsystem/ide-build-manager.h         |   15 +++++
 src/libide/buildsystem/ide-build-pipeline-addin.h  |    5 ++
 src/libide/buildsystem/ide-build-pipeline.h        |   33 ++++++++++++
 src/libide/buildsystem/ide-build-stage-launcher.h  |    9 +++
 src/libide/buildsystem/ide-build-stage-mkdirs.h    |    4 ++
 src/libide/buildsystem/ide-build-stage-transfer.h  |    3 +
 src/libide/buildsystem/ide-build-stage.h           |   25 +++++++++
 .../buildsystem/ide-build-system-discovery.h       |    3 +
 src/libide/buildsystem/ide-build-system.h          |   14 +++++
 src/libide/buildsystem/ide-build-target.h          |    4 ++
 src/libide/buildsystem/ide-compile-commands.h      |    7 +++
 src/libide/buildsystem/ide-configuration-manager.h |    9 +++
 .../buildsystem/ide-configuration-provider.h       |    7 +++
 src/libide/buildsystem/ide-configuration.h         |   55 ++++++++++++++++++++
 src/libide/buildsystem/ide-environment-variable.h  |    7 +++
 src/libide/buildsystem/ide-environment.h           |   10 ++++
 src/libide/debugger/ide-debug-manager.h            |    8 +++
 src/libide/debugger/ide-debugger-breakpoint.h      |   25 +++++++++
 src/libide/debugger/ide-debugger-breakpoints.h     |    6 ++
 src/libide/debugger/ide-debugger-frame.h           |   17 ++++++
 src/libide/debugger/ide-debugger-instruction.h     |    8 +++
 src/libide/debugger/ide-debugger-library.h         |   11 ++++
 src/libide/debugger/ide-debugger-register.h        |    9 +++
 src/libide/debugger/ide-debugger-thread-group.h    |    9 +++
 src/libide/debugger/ide-debugger-thread.h          |    7 +++
 src/libide/debugger/ide-debugger-types.h           |   12 ++++
 src/libide/debugger/ide-debugger-variable.h        |   10 ++++
 src/libide/debugger/ide-debugger.h                 |   52 ++++++++++++++++++
 src/libide/devices/ide-device-manager.h            |    7 +++
 src/libide/devices/ide-device-provider.h           |    6 ++
 src/libide/devices/ide-device.h                    |    9 +++
 src/libide/diagnostics/ide-diagnostic-provider.h   |    6 ++
 src/libide/diagnostics/ide-diagnostic.h            |   21 ++++++++
 src/libide/diagnostics/ide-diagnostics-manager.h   |    6 ++
 src/libide/diagnostics/ide-diagnostics.h           |   10 ++++
 src/libide/diagnostics/ide-source-location.h       |   14 +++++
 src/libide/diagnostics/ide-source-range.h          |    8 +++
 src/libide/doap/ide-doap-person.h                  |    7 +++
 src/libide/doap/ide-doap.h                         |   15 +++++
 src/libide/documentation/ide-documentation-info.h  |    8 +++
 .../documentation/ide-documentation-proposal.h     |    8 +++
 .../documentation/ide-documentation-provider.h     |    5 ++
 src/libide/documentation/ide-documentation.h       |    3 +
 src/libide/editor/ide-editor-addin.h               |    6 ++
 src/libide/editor/ide-editor-perspective.h         |   11 ++++
 src/libide/editor/ide-editor-search.h              |   33 ++++++++++++
 src/libide/editor/ide-editor-sidebar.h             |    6 ++
 src/libide/editor/ide-editor-utilities.h           |    2 +
 src/libide/editor/ide-editor-view-addin.h          |    7 +++
 src/libide/editor/ide-editor-view.h                |   18 ++++++
 src/libide/files/ide-file-settings.h               |    5 ++
 src/libide/files/ide-file.h                        |   17 ++++++
 src/libide/genesis/ide-genesis-addin.h             |   10 ++++
 src/libide/highlighting/ide-highlight-engine.h     |   11 ++++
 src/libide/highlighting/ide-highlight-index.h      |    9 +++
 src/libide/highlighting/ide-highlighter.h          |    4 ++
 src/libide/ide-context.h                           |   36 +++++++++++++
 src/libide/ide-object.h                            |   10 ++++
 src/libide/ide-pausable.h                          |   11 ++++
 src/libide/ide-service.h                           |    5 ++
 src/libide/langserv/ide-langserv-client.h          |   12 ++++
 .../langserv/ide-langserv-completion-provider.h    |    4 ++
 .../langserv/ide-langserv-diagnostic-provider.h    |    4 ++
 src/libide/langserv/ide-langserv-rename-provider.h |    4 ++
 src/libide/langserv/ide-langserv-symbol-resolver.h |    4 ++
 src/libide/langserv/ide-langserv-util.h            |    4 ++
 src/libide/layout/ide-layout-grid-column.h         |    5 ++
 src/libide/layout/ide-layout-grid.h                |   11 ++++
 src/libide/layout/ide-layout-pane.h                |    2 +
 src/libide/layout/ide-layout-stack-addin.h         |    6 ++
 src/libide/layout/ide-layout-stack-header.h        |    4 ++
 src/libide/layout/ide-layout-stack.h               |   10 ++++
 src/libide/layout/ide-layout-transient-sidebar.h   |    4 ++
 src/libide/layout/ide-layout-view.h                |   23 ++++++++
 src/libide/layout/ide-layout.h                     |    2 +
 src/libide/local/ide-local-device.h                |    2 +
 src/libide/logging/ide-log.h                       |    7 +++
 src/libide/preferences/ide-preferences-addin.h     |    4 ++
 .../preferences/ide-preferences-perspective.h      |    2 +
 src/libide/preferences/ide-preferences-window.h    |    2 +
 src/libide/projects/ide-project-edit.h             |    7 +++
 src/libide/projects/ide-project-file.h             |    7 +++
 src/libide/projects/ide-project-files.h            |    5 ++
 src/libide/projects/ide-project-item.h             |    6 ++
 src/libide/projects/ide-project-miner.h            |    5 ++
 src/libide/projects/ide-project.h                  |   17 ++++++
 src/libide/projects/ide-recent-projects.h          |    8 +++
 src/libide/rename/ide-rename-provider.h            |    5 ++
 src/libide/runner/ide-run-manager.h                |   14 +++++
 src/libide/runner/ide-runner-addin.h               |    8 +++
 src/libide/runner/ide-runner.h                     |   29 ++++++++++
 src/libide/runtimes/ide-runtime-manager.h          |    7 +++
 src/libide/runtimes/ide-runtime-provider.h         |    7 +++
 src/libide/runtimes/ide-runtime.h                  |   13 +++++
 src/libide/search/ide-search-engine.h              |    6 ++
 src/libide/search/ide-search-entry.h               |    3 +
 src/libide/search/ide-search-provider.h            |    4 ++
 src/libide/search/ide-search-reducer.h             |    8 +++
 src/libide/search/ide-search-result.h              |    9 +++
 src/libide/snippets/ide-source-snippet-chunk.h     |   14 +++++
 src/libide/snippets/ide-source-snippet-context.h   |   13 +++++
 src/libide/snippets/ide-source-snippet.h           |   18 ++++++
 src/libide/snippets/ide-source-snippets-manager.h  |    6 ++
 src/libide/snippets/ide-source-snippets.h          |    8 +++
 src/libide/sourceview/ide-completion-item.h        |    8 +++
 src/libide/sourceview/ide-completion-provider.h    |    7 +++
 src/libide/sourceview/ide-completion-results.h     |   11 ++++
 src/libide/sourceview/ide-indenter.h               |    4 ++
 src/libide/sourceview/ide-language.h               |    3 +
 src/libide/sourceview/ide-source-map.h             |    2 +
 src/libide/sourceview/ide-source-style-scheme.h    |    3 +
 src/libide/sourceview/ide-source-view.h            |   52 ++++++++++++++++++
 src/libide/subprocess/ide-subprocess-launcher.h    |   28 ++++++++++
 src/libide/subprocess/ide-subprocess.h             |   27 ++++++++++
 src/libide/symbols/ide-code-index-entry.h          |    7 +++
 src/libide/symbols/ide-code-indexer.h              |    5 ++
 src/libide/symbols/ide-symbol-resolver.h           |   11 ++++
 src/libide/symbols/ide-symbol.h                    |   13 +++++
 src/libide/symbols/ide-tags-builder.h              |    4 ++
 src/libide/template/ide-project-template.h         |   10 ++++
 src/libide/template/ide-template-provider.h        |    3 +
 src/libide/testing/ide-test-provider.h             |    9 +++
 src/libide/testing/ide-test.h                      |   12 ++++
 src/libide/threading/ide-thread-pool.h             |    4 ++
 src/libide/transfers/ide-pkcon-transfer.h          |    3 +
 src/libide/transfers/ide-transfer-button.h         |    3 +
 src/libide/transfers/ide-transfer-manager.h        |    8 +++
 src/libide/transfers/ide-transfer.h                |   16 ++++++
 src/libide/util/ide-cell-renderer-fancy.h          |    6 ++
 src/libide/util/ide-fancy-tree-view.h              |    4 ++
 src/libide/util/ide-flatpak.h                      |    4 ++
 src/libide/util/ide-gtk.h                          |    5 ++
 src/libide/util/ide-line-reader.h                  |    4 ++
 src/libide/util/ide-posix.h                        |    7 +++
 src/libide/util/ide-progress.h                     |    9 +++
 src/libide/util/ide-ref-ptr.h                      |    7 +++
 src/libide/util/ide-uri.h                          |   35 ++++++++++++
 src/libide/vcs/ide-vcs-config.h                    |    4 ++
 src/libide/vcs/ide-vcs-initializer.h               |    5 ++
 src/libide/vcs/ide-vcs-uri.h                       |   18 ++++++
 src/libide/vcs/ide-vcs.h                           |   13 +++++
 src/libide/workbench/ide-perspective.h             |   13 +++++
 src/libide/workbench/ide-workbench-addin.h         |   10 ++++
 src/libide/workbench/ide-workbench-header-bar.h    |    8 +++
 src/libide/workbench/ide-workbench-message.h       |   10 ++++
 src/libide/workbench/ide-workbench.h               |   26 +++++++++
 157 files changed, 1623 insertions(+), 0 deletions(-)
---
diff --git a/src/libide/application/ide-application-addin.h b/src/libide/application/ide-application-addin.h
index 063915b..071c969 100644
--- a/src/libide/application/ide-application-addin.h
+++ b/src/libide/application/ide-application-addin.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "application/ide-application.h"
 
 G_BEGIN_DECLS
@@ -43,8 +45,10 @@ struct _IdeApplicationAddinInterface
                   IdeApplication      *application);
 };
 
+IDE_AVAILABLE_IN_ALL
 void ide_application_addin_load   (IdeApplicationAddin *self,
                                    IdeApplication      *application);
+IDE_AVAILABLE_IN_ALL
 void ide_application_addin_unload (IdeApplicationAddin *self,
                                    IdeApplication      *application);
 
diff --git a/src/libide/application/ide-application-tool.h b/src/libide/application/ide-application-tool.h
index b282411..3e5e288 100644
--- a/src/libide/application/ide-application-tool.h
+++ b/src/libide/application/ide-application-tool.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_APPLICATION_TOOL (ide_application_tool_get_type())
@@ -53,11 +55,13 @@ struct _IdeApplicationToolInterface
                       GError              **error);
 };
 
+IDE_AVAILABLE_IN_ALL
 void ide_application_tool_run_async  (IdeApplicationTool   *self,
                                       const gchar * const  *arguments,
                                       GCancellable         *cancellable,
                                       GAsyncReadyCallback   callback,
                                       gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gint ide_application_tool_run_finish (IdeApplicationTool   *self,
                                       GAsyncResult         *result,
                                       GError              **error);
diff --git a/src/libide/application/ide-application.h b/src/libide/application/ide-application.h
index 2adf0d3..08c9110 100644
--- a/src/libide/application/ide-application.h
+++ b/src/libide/application/ide-application.h
@@ -21,6 +21,8 @@
 #include <dazzle.h>
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 #include "projects/ide-recent-projects.h"
 #include "transfers/ide-transfer-manager.h"
 
@@ -40,24 +42,36 @@ typedef enum
   IDE_APPLICATION_MODE_TESTS,
 } IdeApplicationMode;
 
+IDE_AVAILABLE_IN_ALL
 GThread            *ide_application_get_main_thread      (void);
+IDE_AVAILABLE_IN_ALL
 IdeApplicationMode  ide_application_get_mode             (IdeApplication       *self);
+IDE_AVAILABLE_IN_ALL
 IdeApplication     *ide_application_new                  (void);
+IDE_AVAILABLE_IN_ALL
 GDateTime          *ide_application_get_started_at       (IdeApplication       *self);
+IDE_AVAILABLE_IN_ALL
 IdeTransferManager *ide_application_get_transfer_manager (IdeApplication       *self);
+IDE_AVAILABLE_IN_ALL
 IdeRecentProjects  *ide_application_get_recent_projects  (IdeApplication       *self);
+IDE_AVAILABLE_IN_ALL
 void                ide_application_show_projects_window (IdeApplication       *self);
+IDE_AVAILABLE_IN_ALL
 const gchar        *ide_application_get_keybindings_mode (IdeApplication       *self);
+IDE_AVAILABLE_IN_ALL
 void                ide_application_get_worker_async     (IdeApplication       *self,
                                                           const gchar          *plugin_name,
                                                           GCancellable         *cancellable,
                                                           GAsyncReadyCallback   callback,
                                                           gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 GDBusProxy         *ide_application_get_worker_finish    (IdeApplication       *self,
                                                           GAsyncResult         *result,
                                                           GError              **error);
+IDE_AVAILABLE_IN_ALL
 gboolean            ide_application_open_project         (IdeApplication       *self,
                                                           GFile                *file);
+IDE_AVAILABLE_IN_ALL
 void                ide_application_add_reaper           (IdeApplication       *self,
                                                           DzlDirectoryReaper   *reaper);
 
diff --git a/src/libide/buffers/ide-buffer-addin.h b/src/libide/buffers/ide-buffer-addin.h
index 562b442..58d455e 100644
--- a/src/libide/buffers/ide-buffer-addin.h
+++ b/src/libide/buffers/ide-buffer-addin.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "buffers/ide-buffer.h"
 
 G_BEGIN_DECLS
@@ -36,10 +38,13 @@ struct _IdeBufferAddinInterface
                   IdeBuffer         *buffer);
 };
 
+IDE_AVAILABLE_IN_ALL
 void            ide_buffer_addin_load                (IdeBufferAddin *self,
                                                       IdeBuffer      *buffer);
+IDE_AVAILABLE_IN_ALL
 void            ide_buffer_addin_unload              (IdeBufferAddin *self,
                                                       IdeBuffer      *buffer);
+IDE_AVAILABLE_IN_ALL
 IdeBufferAddin *ide_buffer_addin_find_by_module_name (IdeBuffer      *buffer,
                                                       const gchar    *module_name);
 
diff --git a/src/libide/buffers/ide-buffer-change-monitor.h b/src/libide/buffers/ide-buffer-change-monitor.h
index 87c6df7..2809914 100644
--- a/src/libide/buffers/ide-buffer-change-monitor.h
+++ b/src/libide/buffers/ide-buffer-change-monitor.h
@@ -20,6 +20,8 @@
 
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 G_BEGIN_DECLS
@@ -57,9 +59,12 @@ struct _IdeBufferChangeMonitorClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeBufferLineChange ide_buffer_change_monitor_get_change   (IdeBufferChangeMonitor *self,
                                                             guint                   line);
+IDE_AVAILABLE_IN_ALL
 void                ide_buffer_change_monitor_emit_changed (IdeBufferChangeMonitor *self);
+IDE_AVAILABLE_IN_ALL
 void                ide_buffer_change_monitor_reload       (IdeBufferChangeMonitor *self);
 
 G_END_DECLS
diff --git a/src/libide/buffers/ide-buffer-manager.h b/src/libide/buffers/ide-buffer-manager.h
index c44d64b..e5927df 100644
--- a/src/libide/buffers/ide-buffer-manager.h
+++ b/src/libide/buffers/ide-buffer-manager.h
@@ -21,6 +21,8 @@
 #include <gtk/gtk.h>
 #include <gtksourceview/gtksource.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 #include "files/ide-file.h"
@@ -32,8 +34,10 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeBufferManager, ide_buffer_manager, IDE, BUFFER_MANAGER, IdeObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeBuffer                *ide_buffer_manager_create_temporary_buffer
                                                                  (IdeBufferManager     *self);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_manager_load_file_async     (IdeBufferManager     *self,
                                                                   IdeFile              *file,
                                                                   gboolean              force_reload,
@@ -42,9 +46,11 @@ void                      ide_buffer_manager_load_file_async     (IdeBufferManag
                                                                   GCancellable         *cancellable,
                                                                   GAsyncReadyCallback   callback,
                                                                   gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 IdeBuffer                *ide_buffer_manager_load_file_finish    (IdeBufferManager     *self,
                                                                   GAsyncResult         *result,
                                                                   GError              **error);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_manager_save_file_async     (IdeBufferManager     *self,
                                                                   IdeBuffer            *buffer,
                                                                   IdeFile              *file,
@@ -52,34 +58,48 @@ void                      ide_buffer_manager_save_file_async     (IdeBufferManag
                                                                   GCancellable         *cancellable,
                                                                   GAsyncReadyCallback   callback,
                                                                   gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean                  ide_buffer_manager_save_file_finish    (IdeBufferManager     *self,
                                                                   GAsyncResult         *result,
                                                                   GError              **error);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_manager_save_all_async      (IdeBufferManager     *self,
                                                                   GCancellable         *cancellable,
                                                                   GAsyncReadyCallback   callback,
                                                                   gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean                  ide_buffer_manager_save_all_finish     (IdeBufferManager     *self,
                                                                   GAsyncResult         *result,
                                                                   GError              **error);
+IDE_AVAILABLE_IN_ALL
 IdeBuffer                *ide_buffer_manager_get_focus_buffer    (IdeBufferManager     *self);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_manager_set_focus_buffer    (IdeBufferManager     *self,
                                                                   IdeBuffer            *buffer);
+IDE_AVAILABLE_IN_ALL
 GPtrArray                *ide_buffer_manager_get_buffers         (IdeBufferManager     *self);
+IDE_AVAILABLE_IN_ALL
 GtkSourceCompletionWords *ide_buffer_manager_get_word_completion (IdeBufferManager     *self);
+IDE_AVAILABLE_IN_ALL
 guint                     ide_buffer_manager_get_n_buffers       (IdeBufferManager     *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                  ide_buffer_manager_has_file            (IdeBufferManager     *self,
                                                                   GFile                *file);
+IDE_AVAILABLE_IN_ALL
 IdeBuffer                *ide_buffer_manager_find_buffer         (IdeBufferManager     *self,
                                                                   GFile                *file);
+IDE_AVAILABLE_IN_ALL
 gsize                     ide_buffer_manager_get_max_file_size   (IdeBufferManager     *self);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_manager_set_max_file_size   (IdeBufferManager     *self,
                                                                   gsize                 max_file_size);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_manager_apply_edits_async   (IdeBufferManager     *self,
                                                                   GPtrArray            *edits,
                                                                   GCancellable         *cancellable,
                                                                   GAsyncReadyCallback   callback,
                                                                   gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean                  ide_buffer_manager_apply_edits_finish  (IdeBufferManager     *self,
                                                                   GAsyncResult         *result,
                                                                   GError              **error);
diff --git a/src/libide/buffers/ide-buffer.h b/src/libide/buffers/ide-buffer.h
index 75867cf..bc0084e 100644
--- a/src/libide/buffers/ide-buffer.h
+++ b/src/libide/buffers/ide-buffer.h
@@ -20,6 +20,8 @@
 
 #include <gtksourceview/gtksource.h>
 
+#include "ide-version-macros.h"
+
 #include "plugins/ide-extension-set-adapter.h"
 #include "ide-types.h"
 
@@ -63,64 +65,99 @@ struct _IdeBufferClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_format_selection_async        (IdeBuffer            *self,
                                                                     IdeFormatterOptions *options,
                                                                     GCancellable         *cancellable,
                                                                     GAsyncReadyCallback   callback,
                                                                     gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean                  ide_buffer_format_selection_finish       (IdeBuffer            *self,
                                                                     GAsyncResult         *result,
                                                                     GError              **error);
+IDE_AVAILABLE_IN_ALL
 gboolean                  ide_buffer_get_busy                      (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                  ide_buffer_get_changed_on_volume         (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 gsize                     ide_buffer_get_change_count              (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 GBytes                   *ide_buffer_get_content                   (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 IdeContext               *ide_buffer_get_context                   (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 IdeDiagnostic            *ide_buffer_get_diagnostic_at_iter        (IdeBuffer            *self,
                                                                     const GtkTextIter    *iter);
+IDE_AVAILABLE_IN_ALL
 IdeFile                  *ide_buffer_get_file                      (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 IdeBufferLineFlags        ide_buffer_get_line_flags                (IdeBuffer            *self,
                                                                     guint                 line);
+IDE_AVAILABLE_IN_ALL
 gboolean                  ide_buffer_get_read_only                 (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                  ide_buffer_get_spell_checking            (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                  ide_buffer_get_highlight_diagnostics     (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 const gchar              *ide_buffer_get_style_scheme_name         (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 const gchar              *ide_buffer_get_title                     (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 gchar                    *ide_buffer_get_uri                       (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_set_file                      (IdeBuffer            *self,
                                                                     IdeFile              *file);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_set_highlight_diagnostics     (IdeBuffer            *self,
                                                                     gboolean              
highlight_diagnostics);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_set_spell_checking            (IdeBuffer            *self,
                                                                     gboolean              enable);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_set_style_scheme_name         (IdeBuffer            *self,
                                                                     const gchar          *style_scheme_name);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_trim_trailing_whitespace      (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_check_for_volume_change       (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 IdeSourceLocation        *ide_buffer_get_insert_location           (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 IdeSourceLocation        *ide_buffer_get_iter_location             (IdeBuffer            *self,
                                                                     const GtkTextIter    *iter);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_get_iter_at_source_location   (IdeBuffer            *self,
                                                                     GtkTextIter          *iter,
                                                                     IdeSourceLocation    *location);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_rehighlight                   (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_get_selection_bounds          (IdeBuffer            *self,
                                                                     GtkTextIter          *insert,
                                                                     GtkTextIter          *selection);
+IDE_AVAILABLE_IN_ALL
 IdeRenameProvider        *ide_buffer_get_rename_provider           (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 IdeExtensionSetAdapter   *ide_buffer_get_symbol_resolvers          (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_get_symbol_at_location_async  (IdeBuffer            *self,
                                                                     const GtkTextIter    *location,
                                                                     GCancellable         *cancellable,
                                                                     GAsyncReadyCallback   callback,
                                                                     gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 IdeSymbol                *ide_buffer_get_symbol_at_location_finish (IdeBuffer            *self,
                                                                     GAsyncResult         *result,
                                                                     GError              **error);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_hold                          (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_release                       (IdeBuffer            *self);
+IDE_AVAILABLE_IN_ALL
 gchar                    *ide_buffer_get_word_at_iter              (IdeBuffer            *self,
                                                               const GtkTextIter    *iter);
+IDE_AVAILABLE_IN_ALL
 void                      ide_buffer_sync_to_unsaved_files         (IdeBuffer            *self);
 
 G_END_DECLS
diff --git a/src/libide/buffers/ide-unsaved-file.h b/src/libide/buffers/ide-unsaved-file.h
index f77dfa1..33cd3af 100644
--- a/src/libide/buffers/ide-unsaved-file.h
+++ b/src/libide/buffers/ide-unsaved-file.h
@@ -20,17 +20,27 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 
 G_BEGIN_DECLS
 
+IDE_AVAILABLE_IN_ALL
 GType           ide_unsaved_file_get_type      (void);
+IDE_AVAILABLE_IN_ALL
 IdeUnsavedFile *ide_unsaved_file_ref           (IdeUnsavedFile  *self);
+IDE_AVAILABLE_IN_ALL
 void            ide_unsaved_file_unref         (IdeUnsavedFile  *self);
+IDE_AVAILABLE_IN_ALL
 GBytes         *ide_unsaved_file_get_content   (IdeUnsavedFile  *self);
+IDE_AVAILABLE_IN_ALL
 GFile          *ide_unsaved_file_get_file      (IdeUnsavedFile  *self);
+IDE_AVAILABLE_IN_ALL
 gint64          ide_unsaved_file_get_sequence  (IdeUnsavedFile  *self);
+IDE_AVAILABLE_IN_ALL
 const gchar    *ide_unsaved_file_get_temp_path (IdeUnsavedFile  *self);
+IDE_AVAILABLE_IN_ALL
 gboolean        ide_unsaved_file_persist       (IdeUnsavedFile  *self,
                                                 GCancellable    *cancellable,
                                                 GError         **error);
diff --git a/src/libide/buffers/ide-unsaved-files.h b/src/libide/buffers/ide-unsaved-files.h
index 0945b68..b0f6c17 100644
--- a/src/libide/buffers/ide-unsaved-files.h
+++ b/src/libide/buffers/ide-unsaved-files.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 G_BEGIN_DECLS
@@ -31,30 +33,41 @@ struct _IdeUnsavedFiles
   IdeObject parent_instance;
 };
 
+IDE_AVAILABLE_IN_ALL
 void            ide_unsaved_files_update            (IdeUnsavedFiles      *self,
                                                      GFile                *file,
                                                      GBytes               *content);
+IDE_AVAILABLE_IN_ALL
 void            ide_unsaved_files_remove            (IdeUnsavedFiles      *self,
                                                      GFile                *file);
+IDE_AVAILABLE_IN_ALL
 void            ide_unsaved_files_save_async        (IdeUnsavedFiles      *files,
                                                      GCancellable         *cancellable,
                                                      GAsyncReadyCallback   callback,
                                                      gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean        ide_unsaved_files_save_finish       (IdeUnsavedFiles      *files,
                                                      GAsyncResult         *result,
                                                      GError              **error);
+IDE_AVAILABLE_IN_ALL
 void            ide_unsaved_files_restore_async     (IdeUnsavedFiles      *files,
                                                      GCancellable         *cancellable,
                                                      GAsyncReadyCallback   callback,
                                                      gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean        ide_unsaved_files_restore_finish    (IdeUnsavedFiles      *files,
                                                      GAsyncResult         *result,
                                                      GError              **error);
+IDE_AVAILABLE_IN_ALL
 GPtrArray      *ide_unsaved_files_to_array          (IdeUnsavedFiles      *files);
+IDE_AVAILABLE_IN_ALL
 gint64          ide_unsaved_files_get_sequence      (IdeUnsavedFiles      *files);
+IDE_AVAILABLE_IN_ALL
 IdeUnsavedFile *ide_unsaved_files_get_unsaved_file  (IdeUnsavedFiles      *self,
                                                      GFile                *file);
+IDE_AVAILABLE_IN_ALL
 void            ide_unsaved_files_clear             (IdeUnsavedFiles      *self);
+IDE_AVAILABLE_IN_ALL
 gboolean        ide_unsaved_files_contains          (IdeUnsavedFiles      *self,
                                                      GFile                *file);
 
diff --git a/src/libide/buildconfig/ide-buildconfig-configuration-provider.h 
b/src/libide/buildconfig/ide-buildconfig-configuration-provider.h
index 55f2d17..6e2b957 100644
--- a/src/libide/buildconfig/ide-buildconfig-configuration-provider.h
+++ b/src/libide/buildconfig/ide-buildconfig-configuration-provider.h
@@ -20,6 +20,8 @@
 
 #include <glib.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 
 #include "buildconfig/ide-buildconfig-configuration.h"
@@ -30,6 +32,7 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeBuildconfigConfigurationProvider, ide_buildconfig_configuration_provider, IDE, 
BUILDCONFIG_CONFIGURATION_PROVIDER, GObject)
 
+IDE_AVAILABLE_IN_ALL
 void ide_buildconfig_configuration_provider_track_config (IdeBuildconfigConfigurationProvider *self,
                                                           IdeBuildconfigConfiguration         *config);
 
diff --git a/src/libide/buildconfig/ide-buildconfig-configuration.h 
b/src/libide/buildconfig/ide-buildconfig-configuration.h
index 5ab3be1..99d5f8b 100644
--- a/src/libide/buildconfig/ide-buildconfig-configuration.h
+++ b/src/libide/buildconfig/ide-buildconfig-configuration.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "buildsystem/ide-configuration.h"
 
 G_BEGIN_DECLS
@@ -26,10 +28,14 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeBuildconfigConfiguration, ide_buildconfig_configuration, IDE, 
BUILDCONFIG_CONFIGURATION, IdeConfiguration)
 
+IDE_AVAILABLE_IN_ALL
 const gchar * const *ide_buildconfig_configuration_get_prebuild  (IdeBuildconfigConfiguration *self);
+IDE_AVAILABLE_IN_ALL
 void                 ide_buildconfig_configuration_set_prebuild  (IdeBuildconfigConfiguration *self,
                                                                   const gchar * const         *prebuild);
+IDE_AVAILABLE_IN_ALL
 const gchar * const *ide_buildconfig_configuration_get_postbuild (IdeBuildconfigConfiguration *self);
+IDE_AVAILABLE_IN_ALL
 void                 ide_buildconfig_configuration_set_postbuild (IdeBuildconfigConfiguration *self,
                                                                   const gchar * const         *postbuild);
 
diff --git a/src/libide/buildsystem/ide-build-manager.h b/src/libide/buildsystem/ide-build-manager.h
index 988fcf1..8524d1e 100644
--- a/src/libide/buildsystem/ide-build-manager.h
+++ b/src/libide/buildsystem/ide-build-manager.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 #include "buildsystem/ide-build-pipeline.h"
@@ -30,34 +32,47 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeBuildManager, ide_build_manager, IDE, BUILD_MANAGER, IdeObject)
 
+IDE_AVAILABLE_IN_ALL
 gboolean          ide_build_manager_get_busy            (IdeBuildManager       *self);
+IDE_AVAILABLE_IN_ALL
 gboolean          ide_build_manager_get_can_build       (IdeBuildManager       *self);
+IDE_AVAILABLE_IN_ALL
 gchar            *ide_build_manager_get_message         (IdeBuildManager       *self);
+IDE_AVAILABLE_IN_ALL
 GDateTime        *ide_build_manager_get_last_build_time (IdeBuildManager       *self);
+IDE_AVAILABLE_IN_ALL
 GTimeSpan         ide_build_manager_get_running_time    (IdeBuildManager       *self);
+IDE_AVAILABLE_IN_ALL
 void              ide_build_manager_cancel              (IdeBuildManager       *self);
+IDE_AVAILABLE_IN_ALL
 IdeBuildPipeline *ide_build_manager_get_pipeline        (IdeBuildManager       *self);
+IDE_AVAILABLE_IN_ALL
 void              ide_build_manager_rebuild_async       (IdeBuildManager       *self,
                                                          IdeBuildPhase          phase,
                                                          GCancellable          *cancellable,
                                                          GAsyncReadyCallback    callback,
                                                          gpointer               user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean          ide_build_manager_rebuild_finish      (IdeBuildManager       *self,
                                                          GAsyncResult          *result,
                                                          GError               **error);
+IDE_AVAILABLE_IN_ALL
 void              ide_build_manager_execute_async       (IdeBuildManager       *self,
                                                          IdeBuildPhase          phase,
                                                          GCancellable          *cancellable,
                                                          GAsyncReadyCallback    callback,
                                                          gpointer               user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean          ide_build_manager_execute_finish      (IdeBuildManager       *self,
                                                          GAsyncResult          *result,
                                                          GError               **error);
+IDE_AVAILABLE_IN_ALL
 void              ide_build_manager_clean_async         (IdeBuildManager       *self,
                                                          IdeBuildPhase          phase,
                                                          GCancellable          *cancellable,
                                                          GAsyncReadyCallback    callback,
                                                          gpointer               user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean          ide_build_manager_clean_finish        (IdeBuildManager       *self,
                                                          GAsyncResult          *result,
                                                          GError               **error);
diff --git a/src/libide/buildsystem/ide-build-pipeline-addin.h 
b/src/libide/buildsystem/ide-build-pipeline-addin.h
index b38e85a..437118d 100644
--- a/src/libide/buildsystem/ide-build-pipeline-addin.h
+++ b/src/libide/buildsystem/ide-build-pipeline-addin.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "buildsystem/ide-build-pipeline.h"
 
 G_BEGIN_DECLS
@@ -38,10 +40,13 @@ struct _IdeBuildPipelineAddinInterface
                   IdeBuildPipeline      *pipeline);
 };
 
+IDE_AVAILABLE_IN_ALL
 void ide_build_pipeline_addin_load   (IdeBuildPipelineAddin *self,
                                       IdeBuildPipeline      *pipeline);
+IDE_AVAILABLE_IN_ALL
 void ide_build_pipeline_addin_unload (IdeBuildPipelineAddin *self,
                                       IdeBuildPipeline      *pipeline);
+IDE_AVAILABLE_IN_ALL
 void ide_build_pipeline_addin_track  (IdeBuildPipelineAddin *self,
                                       guint                  stage_id);
 
diff --git a/src/libide/buildsystem/ide-build-pipeline.h b/src/libide/buildsystem/ide-build-pipeline.h
index a59092a..44a0005 100644
--- a/src/libide/buildsystem/ide-build-pipeline.h
+++ b/src/libide/buildsystem/ide-build-pipeline.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 
 #include "buildsystem/ide-build-log.h"
@@ -54,82 +56,113 @@ typedef enum
 
 G_DECLARE_FINAL_TYPE (IdeBuildPipeline, ide_build_pipeline, IDE, BUILD_PIPELINE, IdeObject)
 
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_build_pipeline_get_busy            (IdeBuildPipeline       *self);
+IDE_AVAILABLE_IN_ALL
 IdeConfiguration      *ide_build_pipeline_get_configuration   (IdeBuildPipeline       *self);
+IDE_AVAILABLE_IN_ALL
 IdeRuntime            *ide_build_pipeline_get_runtime         (IdeBuildPipeline       *self);
+IDE_AVAILABLE_IN_ALL
 const gchar           *ide_build_pipeline_get_builddir        (IdeBuildPipeline       *self);
+IDE_AVAILABLE_IN_ALL
 const gchar           *ide_build_pipeline_get_srcdir          (IdeBuildPipeline       *self);
+IDE_AVAILABLE_IN_ALL
 gchar                 *ide_build_pipeline_get_message         (IdeBuildPipeline       *self);
+IDE_AVAILABLE_IN_ALL
 IdeBuildPhase          ide_build_pipeline_get_phase           (IdeBuildPipeline       *self);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_build_pipeline_get_can_export      (IdeBuildPipeline       *self);
+IDE_AVAILABLE_IN_ALL
 IdeSubprocessLauncher *ide_build_pipeline_create_launcher     (IdeBuildPipeline       *self,
                                                                GError                **error);
+IDE_AVAILABLE_IN_ALL
 gchar                 *ide_build_pipeline_build_srcdir_path   (IdeBuildPipeline       *self,
                                                                const gchar            *first_part,
                                                                ...) G_GNUC_NULL_TERMINATED;
+IDE_AVAILABLE_IN_ALL
 gchar                 *ide_build_pipeline_build_builddir_path (IdeBuildPipeline       *self,
                                                                const gchar            *first_part,
                                                                ...) G_GNUC_NULL_TERMINATED;
+IDE_AVAILABLE_IN_ALL
 void                   ide_build_pipeline_invalidate_phase    (IdeBuildPipeline       *self,
                                                                IdeBuildPhase           phases);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_build_pipeline_request_phase       (IdeBuildPipeline       *self,
                                                                IdeBuildPhase           phase);
+IDE_AVAILABLE_IN_ALL
 guint                  ide_build_pipeline_connect             (IdeBuildPipeline       *self,
                                                                IdeBuildPhase           phase,
                                                                gint                    priority,
                                                                IdeBuildStage          *stage);
+IDE_AVAILABLE_IN_ALL
 guint                  ide_build_pipeline_connect_launcher    (IdeBuildPipeline       *self,
                                                                IdeBuildPhase           phase,
                                                                gint                    priority,
                                                                IdeSubprocessLauncher  *launcher);
+IDE_AVAILABLE_IN_ALL
 void                   ide_build_pipeline_disconnect          (IdeBuildPipeline       *self,
                                                                guint                   stage_id);
+IDE_AVAILABLE_IN_ALL
 IdeBuildStage         *ide_build_pipeline_get_stage_by_id     (IdeBuildPipeline       *self,
                                                                guint                   stage_id);
+IDE_AVAILABLE_IN_ALL
 guint                  ide_build_pipeline_add_log_observer    (IdeBuildPipeline       *self,
                                                                IdeBuildLogObserver     observer,
                                                                gpointer                observer_data,
                                                                GDestroyNotify          
observer_data_destroy);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_build_pipeline_remove_log_observer (IdeBuildPipeline       *self,
                                                                guint                   observer_id);
+IDE_AVAILABLE_IN_ALL
 void                   ide_build_pipeline_emit_diagnostic     (IdeBuildPipeline       *self,
                                                                IdeDiagnostic          *diagnostic);
+IDE_AVAILABLE_IN_ALL
 guint                  ide_build_pipeline_add_error_format    (IdeBuildPipeline       *self,
                                                                const gchar            *regex,
                                                                GRegexCompileFlags      flags);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_build_pipeline_remove_error_format (IdeBuildPipeline       *self,
                                                                guint                   error_format_id);
+IDE_AVAILABLE_IN_ALL
 void                   ide_build_pipeline_build_async         (IdeBuildPipeline       *self,
                                                                IdeBuildPhase           phase,
                                                                GCancellable           *cancellable,
                                                                GAsyncReadyCallback     callback,
                                                                gpointer                user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_build_pipeline_build_finish        (IdeBuildPipeline       *self,
                                                                GAsyncResult           *result,
                                                                GError                **error);
+IDE_AVAILABLE_IN_ALL
 void                   ide_build_pipeline_execute_async       (IdeBuildPipeline       *self,
                                                                GCancellable           *cancellable,
                                                                GAsyncReadyCallback     callback,
                                                                gpointer                user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_build_pipeline_execute_finish      (IdeBuildPipeline       *self,
                                                                GAsyncResult           *result,
                                                                GError                **error);
+IDE_AVAILABLE_IN_ALL
 void                   ide_build_pipeline_foreach_stage       (IdeBuildPipeline       *self,
                                                                GFunc                   stage_callback,
                                                                gpointer                user_data);
+IDE_AVAILABLE_IN_ALL
 void                   ide_build_pipeline_clean_async         (IdeBuildPipeline       *self,
                                                                IdeBuildPhase           phase,
                                                                GCancellable           *cancellable,
                                                                GAsyncReadyCallback     callback,
                                                                gpointer                user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_build_pipeline_clean_finish        (IdeBuildPipeline       *self,
                                                                GAsyncResult           *result,
                                                                GError                **error);
+IDE_AVAILABLE_IN_ALL
 void                   ide_build_pipeline_rebuild_async       (IdeBuildPipeline       *self,
                                                                IdeBuildPhase           phase,
                                                                GCancellable           *cancellable,
                                                                GAsyncReadyCallback     callback,
                                                                gpointer                user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_build_pipeline_rebuild_finish      (IdeBuildPipeline       *self,
                                                                GAsyncResult           *result,
                                                                GError                **error);
diff --git a/src/libide/buildsystem/ide-build-stage-launcher.h 
b/src/libide/buildsystem/ide-build-stage-launcher.h
index 62ebe6a..80026ef 100644
--- a/src/libide/buildsystem/ide-build-stage-launcher.h
+++ b/src/libide/buildsystem/ide-build-stage-launcher.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-context.h"
 
 #include "buildsystem/ide-build-stage.h"
@@ -42,15 +44,22 @@ struct _IdeBuildStageLauncherClass
   gpointer _reserved4;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeBuildStage         *ide_build_stage_launcher_new                    (IdeContext            *context,
                                                                         IdeSubprocessLauncher *launcher);
+IDE_AVAILABLE_IN_ALL
 IdeSubprocessLauncher *ide_build_stage_launcher_get_launcher           (IdeBuildStageLauncher *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_build_stage_launcher_set_launcher           (IdeBuildStageLauncher *self,
                                                                         IdeSubprocessLauncher *launcher);
+IDE_AVAILABLE_IN_ALL
 IdeSubprocessLauncher *ide_build_stage_launcher_get_clean_launcher     (IdeBuildStageLauncher *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_build_stage_launcher_set_clean_launcher     (IdeBuildStageLauncher *self,
                                                                         IdeSubprocessLauncher 
*clean_launcher);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_build_stage_launcher_get_ignore_exit_status (IdeBuildStageLauncher *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_build_stage_launcher_set_ignore_exit_status (IdeBuildStageLauncher *self,
                                                                         gboolean               
ignore_exit_status);
 
diff --git a/src/libide/buildsystem/ide-build-stage-mkdirs.h b/src/libide/buildsystem/ide-build-stage-mkdirs.h
index cda0a90..2f73b89 100644
--- a/src/libide/buildsystem/ide-build-stage-mkdirs.h
+++ b/src/libide/buildsystem/ide-build-stage-mkdirs.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "buildsystem/ide-build-stage.h"
 
 G_BEGIN_DECLS
@@ -37,7 +39,9 @@ struct _IdeBuildStageMkdirsClass
   gpointer _reserved4;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeBuildStage *ide_build_stage_mkdirs_new      (IdeContext          *context);
+IDE_AVAILABLE_IN_ALL
 void           ide_build_stage_mkdirs_add_path (IdeBuildStageMkdirs *self,
                                                 const gchar         *path,
                                                 gboolean             with_parents,
diff --git a/src/libide/buildsystem/ide-build-stage-transfer.h 
b/src/libide/buildsystem/ide-build-stage-transfer.h
index ffb5c45..8226349 100644
--- a/src/libide/buildsystem/ide-build-stage-transfer.h
+++ b/src/libide/buildsystem/ide-build-stage-transfer.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "buildsystem/ide-build-stage.h"
 
 G_BEGIN_DECLS
@@ -26,6 +28,7 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeBuildStageTransfer, ide_build_stage_transfer, IDE, BUILD_STAGE_TRANSFER, 
IdeBuildStage)
 
+IDE_AVAILABLE_IN_ALL
 IdeBuildStageTransfer *ide_build_stage_transfer_new (IdeContext  *context,
                                                      IdeTransfer *transfer);
 
diff --git a/src/libide/buildsystem/ide-build-stage.h b/src/libide/buildsystem/ide-build-stage.h
index 7053b4b..3b4b05e 100644
--- a/src/libide/buildsystem/ide-build-stage.h
+++ b/src/libide/buildsystem/ide-build-stage.h
@@ -21,6 +21,8 @@
 #include <dazzle.h>
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 #include "ide-object.h"
 
@@ -170,54 +172,77 @@ struct _IdeBuildStageClass
   gpointer _reserved12;
 };
 
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_build_stage_get_name         (IdeBuildStage        *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_build_stage_set_name         (IdeBuildStage        *self,
                                                  const gchar          *name);
+IDE_AVAILABLE_IN_ALL
 void           ide_build_stage_log              (IdeBuildStage        *self,
                                                  IdeBuildLogStream     stream,
                                                  const gchar          *message,
                                                  gssize                message_len);
+IDE_AVAILABLE_IN_ALL
 void           ide_build_stage_log_subprocess   (IdeBuildStage        *self,
                                                  IdeSubprocess        *subprocess);
+IDE_AVAILABLE_IN_ALL
 void           ide_build_stage_set_log_observer (IdeBuildStage        *self,
                                                  IdeBuildLogObserver   observer,
                                                  gpointer              observer_data,
                                                  GDestroyNotify        observer_data_destroy);
+IDE_AVAILABLE_IN_ALL
 void           ide_build_stage_set_stdout_path  (IdeBuildStage        *self,
                                                  const gchar          *path);
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_build_stage_get_stdout_path  (IdeBuildStage        *self);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_build_stage_get_completed    (IdeBuildStage        *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_build_stage_set_completed    (IdeBuildStage        *self,
                                                  gboolean              completed);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_build_stage_get_disabled     (IdeBuildStage        *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_build_stage_set_disabled     (IdeBuildStage        *self,
                                                  gboolean              disabled);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_build_stage_get_check_stdout (IdeBuildStage        *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_build_stage_set_check_stdout (IdeBuildStage        *self,
                                                  gboolean              check_stdout);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_build_stage_get_transient    (IdeBuildStage        *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_build_stage_set_transient    (IdeBuildStage        *self,
                                                  gboolean              transient);
+IDE_AVAILABLE_IN_ALL
 void           ide_build_stage_execute_async    (IdeBuildStage        *self,
                                                  IdeBuildPipeline     *pipeline,
                                                  GCancellable         *cancellable,
                                                  GAsyncReadyCallback   callback,
                                                  gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_build_stage_execute_finish   (IdeBuildStage        *self,
                                                  GAsyncResult         *result,
                                                  GError              **error);
+IDE_AVAILABLE_IN_ALL
 void           ide_build_stage_clean_async      (IdeBuildStage        *self,
                                                  IdeBuildPipeline     *pipeline,
                                                  GCancellable         *cancellable,
                                                  GAsyncReadyCallback   callback,
                                                  gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_build_stage_clean_finish     (IdeBuildStage        *self,
                                                  GAsyncResult         *result,
                                                  GError              **error);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_build_stage_chain            (IdeBuildStage        *self,
                                                  IdeBuildStage        *next);
+IDE_AVAILABLE_IN_ALL
 void           ide_build_stage_pause            (IdeBuildStage        *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_build_stage_unpause          (IdeBuildStage        *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_build_stage_emit_reap        (IdeBuildStage        *self,
                                                  DzlDirectoryReaper   *reaper);
 
diff --git a/src/libide/buildsystem/ide-build-system-discovery.h 
b/src/libide/buildsystem/ide-build-system-discovery.h
index 5a11e90..e7ec87a 100644
--- a/src/libide/buildsystem/ide-build-system-discovery.h
+++ b/src/libide/buildsystem/ide-build-system-discovery.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 
 G_BEGIN_DECLS
@@ -39,6 +41,7 @@ struct _IdeBuildSystemDiscoveryInterface
                       GError                  **error);
 };
 
+IDE_AVAILABLE_IN_ALL
 gchar *ide_build_system_discovery_discover (IdeBuildSystemDiscovery  *self,
                                             GFile                    *project_file,
                                             GCancellable             *cancellable,
diff --git a/src/libide/buildsystem/ide-build-system.h b/src/libide/buildsystem/ide-build-system.h
index bf47ad7..c3a8e16 100644
--- a/src/libide/buildsystem/ide-build-system.h
+++ b/src/libide/buildsystem/ide-build-system.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 G_BEGIN_DECLS
@@ -62,39 +64,51 @@ struct _IdeBuildSystemInterface
   gchar      *(*get_display_name)                  (IdeBuildSystem       *self);
 };
 
+IDE_AVAILABLE_IN_ALL
 gchar          *ide_build_system_get_id                            (IdeBuildSystem       *self);
+IDE_AVAILABLE_IN_ALL
 gchar          *ide_build_system_get_display_name                  (IdeBuildSystem       *self);
+IDE_AVAILABLE_IN_ALL
 void            ide_build_system_new_async                         (IdeContext           *context,
                                                                     GFile                *project_file,
                                                                     const gchar          *build_system_hint,
                                                                     GCancellable         *cancellable,
                                                                     GAsyncReadyCallback   callback,
                                                                     gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 IdeBuildSystem *ide_build_system_new_finish                        (GAsyncResult         *result,
                                                                     GError              **error);
+IDE_AVAILABLE_IN_ALL
 gint            ide_build_system_get_priority                      (IdeBuildSystem       *self);
+IDE_AVAILABLE_IN_ALL
 gchar          *ide_build_system_get_builddir                      (IdeBuildSystem       *self,
                                                                     IdeConfiguration     *configuration);
+IDE_AVAILABLE_IN_ALL
 void            ide_build_system_get_build_flags_async             (IdeBuildSystem       *self,
                                                                     IdeFile              *file,
                                                                     GCancellable         *cancellable,
                                                                     GAsyncReadyCallback   callback,
                                                                     gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gchar         **ide_build_system_get_build_flags_finish            (IdeBuildSystem       *self,
                                                                     GAsyncResult         *result,
                                                                     GError              **error);
+IDE_AVAILABLE_IN_ALL
 void            ide_build_system_get_build_flags_for_files_async   (IdeBuildSystem       *self,
                                                                     GPtrArray            *files,
                                                                     GCancellable         *cancellable,
                                                                     GAsyncReadyCallback   callback,
                                                                     gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 GHashTable     *ide_build_system_get_build_flags_for_files_finish  (IdeBuildSystem       *self,
                                                                     GAsyncResult         *result,
                                                                     GError              **error);
+IDE_AVAILABLE_IN_ALL
 void            ide_build_system_get_build_targets_async           (IdeBuildSystem       *self,
                                                                     GCancellable         *cancellable,
                                                                     GAsyncReadyCallback   callback,
                                                                     gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 GPtrArray      *ide_build_system_get_build_targets_finish          (IdeBuildSystem       *self,
                                                                     GAsyncResult         *result,
                                                                     GError              **error);
diff --git a/src/libide/buildsystem/ide-build-target.h b/src/libide/buildsystem/ide-build-target.h
index 8c277d8..460295f 100644
--- a/src/libide/buildsystem/ide-build-target.h
+++ b/src/libide/buildsystem/ide-build-target.h
@@ -20,6 +20,8 @@
 
 #include <glib-object.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 G_BEGIN_DECLS
@@ -45,7 +47,9 @@ struct _IdeBuildTargetInterface
   gpointer _reserved7;
 };
 
+IDE_AVAILABLE_IN_ALL
 GFile  *ide_build_target_get_install_directory (IdeBuildTarget *self);
+IDE_AVAILABLE_IN_ALL
 gchar  *ide_build_target_get_name              (IdeBuildTarget *self);
 
 G_END_DECLS
diff --git a/src/libide/buildsystem/ide-compile-commands.h b/src/libide/buildsystem/ide-compile-commands.h
index 1a77305..b053551 100644
--- a/src/libide/buildsystem/ide-compile-commands.h
+++ b/src/libide/buildsystem/ide-compile-commands.h
@@ -20,25 +20,32 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_COMPILE_COMMANDS (ide_compile_commands_get_type())
 
 G_DECLARE_FINAL_TYPE (IdeCompileCommands, ide_compile_commands, IDE, COMPILE_COMMANDS, GObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeCompileCommands  *ide_compile_commands_new         (void);
+IDE_AVAILABLE_IN_ALL
 gboolean             ide_compile_commands_load        (IdeCompileCommands   *self,
                                                        GFile                *file,
                                                        GCancellable         *cancellable,
                                                        GError              **error);
+IDE_AVAILABLE_IN_ALL
 void                 ide_compile_commands_load_async  (IdeCompileCommands   *self,
                                                        GFile                *file,
                                                        GCancellable         *cancellable,
                                                        GAsyncReadyCallback   callback,
                                                        gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean             ide_compile_commands_load_finish (IdeCompileCommands   *self,
                                                        GAsyncResult         *result,
                                                        GError              **error);
+IDE_AVAILABLE_IN_ALL
 gchar              **ide_compile_commands_lookup      (IdeCompileCommands   *self,
                                                        GFile                *file,
                                                        GFile               **directory,
diff --git a/src/libide/buildsystem/ide-configuration-manager.h 
b/src/libide/buildsystem/ide-configuration-manager.h
index 52bcefc..b7997d3 100644
--- a/src/libide/buildsystem/ide-configuration-manager.h
+++ b/src/libide/buildsystem/ide-configuration-manager.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 #include "ide-types.h"
 
@@ -29,19 +31,26 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeConfigurationManager, ide_configuration_manager, IDE, CONFIGURATION_MANAGER, 
IdeObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeConfiguration *ide_configuration_manager_get_current       (IdeConfigurationManager  *self);
+IDE_AVAILABLE_IN_ALL
 void              ide_configuration_manager_set_current       (IdeConfigurationManager  *self,
                                                                IdeConfiguration         *configuration);
+IDE_AVAILABLE_IN_ALL
 IdeConfiguration *ide_configuration_manager_get_configuration (IdeConfigurationManager  *self,
                                                                const gchar              *id);
+IDE_AVAILABLE_IN_ALL
 void              ide_configuration_manager_add               (IdeConfigurationManager  *self,
                                                                IdeConfiguration         *configuration);
+IDE_AVAILABLE_IN_ALL
 void              ide_configuration_manager_remove            (IdeConfigurationManager  *self,
                                                                IdeConfiguration         *configuration);
+IDE_AVAILABLE_IN_ALL
 void              ide_configuration_manager_save_async        (IdeConfigurationManager  *self,
                                                                GCancellable             *cancellable,
                                                                GAsyncReadyCallback       callback,
                                                                gpointer                  user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean          ide_configuration_manager_save_finish       (IdeConfigurationManager  *self,
                                                                GAsyncResult             *result,
                                                                GError                  **error);
diff --git a/src/libide/buildsystem/ide-configuration-provider.h 
b/src/libide/buildsystem/ide-configuration-provider.h
index fe3519a..9b2a215 100644
--- a/src/libide/buildsystem/ide-configuration-provider.h
+++ b/src/libide/buildsystem/ide-configuration-provider.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 
 G_BEGIN_DECLS
@@ -51,20 +53,25 @@ struct _IdeConfigurationProviderInterface
                            GError                   **error);
 };
 
+IDE_AVAILABLE_IN_ALL
 void     ide_configuration_provider_load_async  (IdeConfigurationProvider  *self,
                                                  IdeConfigurationManager   *manager,
                                                  GCancellable              *cancellable,
                                                  GAsyncReadyCallback        callback,
                                                  gpointer                   user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean ide_configuration_provider_load_finish (IdeConfigurationProvider  *self,
                                                  GAsyncResult              *result,
                                                  GError                   **error);
+IDE_AVAILABLE_IN_ALL
 void     ide_configuration_provider_unload      (IdeConfigurationProvider  *self,
                                                  IdeConfigurationManager   *manager);
+IDE_AVAILABLE_IN_ALL
 void     ide_configuration_provider_save_async  (IdeConfigurationProvider  *self,
                                                  GCancellable              *cancellable,
                                                  GAsyncReadyCallback        callback,
                                                  gpointer                   user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean ide_configuration_provider_save_finish (IdeConfigurationProvider  *self,
                                                  GAsyncResult              *result,
                                                  GError                   **error);
diff --git a/src/libide/buildsystem/ide-configuration.h b/src/libide/buildsystem/ide-configuration.h
index 830af83..25a10ee 100644
--- a/src/libide/buildsystem/ide-configuration.h
+++ b/src/libide/buildsystem/ide-configuration.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 #include "ide-types.h"
 
@@ -65,97 +67,150 @@ struct _IdeConfigurationClass
   gpointer _reserved16;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeConfiguration     *ide_configuration_new                       (IdeContext            *context,
                                                                    const gchar           *id,
                                                                    const gchar           *device_id,
                                                                    const gchar           *runtime_id);
+IDE_AVAILABLE_IN_ALL
 const gchar          *ide_configuration_get_id                    (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 const gchar          *ide_configuration_get_runtime_id            (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_runtime_id            (IdeConfiguration      *self,
                                                                    const gchar           *runtime_id);
+IDE_AVAILABLE_IN_ALL
 const gchar          *ide_configuration_get_device_id             (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_device_id             (IdeConfiguration      *self,
                                                                    const gchar           *device_id);
+IDE_AVAILABLE_IN_ALL
 IdeDevice            *ide_configuration_get_device                (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_device                (IdeConfiguration      *self,
                                                                    IdeDevice             *device);
+IDE_AVAILABLE_IN_ALL
 gboolean              ide_configuration_get_dirty                 (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_dirty                 (IdeConfiguration      *self,
                                                                    gboolean               dirty);
+IDE_AVAILABLE_IN_ALL
 const gchar          *ide_configuration_get_display_name          (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_display_name          (IdeConfiguration      *self,
                                                                    const gchar           *display_name);
+IDE_AVAILABLE_IN_ALL
 gboolean              ide_configuration_get_ready                 (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 IdeRuntime           *ide_configuration_get_runtime               (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_runtime               (IdeConfiguration      *self,
                                                                    IdeRuntime            *runtime);
+IDE_AVAILABLE_IN_ALL
 gchar               **ide_configuration_get_environ               (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 const gchar          *ide_configuration_getenv                    (IdeConfiguration      *self,
                                                                    const gchar           *key);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_setenv                    (IdeConfiguration      *self,
                                                                    const gchar           *key,
                                                                    const gchar           *value);
+IDE_AVAILABLE_IN_ALL
 gboolean              ide_configuration_get_debug                 (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_debug                 (IdeConfiguration      *self,
                                                                    gboolean               debug);
+IDE_AVAILABLE_IN_ALL
 const gchar          *ide_configuration_get_prefix                (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_prefix                (IdeConfiguration      *self,
                                                                    const gchar           *prefix);
+IDE_AVAILABLE_IN_ALL
 const gchar          *ide_configuration_get_config_opts           (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_config_opts           (IdeConfiguration      *self,
                                                                    const gchar           *config_opts);
+IDE_AVAILABLE_IN_ALL
 const gchar          *ide_configuration_get_run_opts              (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_run_opts              (IdeConfiguration      *self,
                                                                    const gchar           *run_opts);
+IDE_AVAILABLE_IN_ALL
 const gchar * const  *ide_configuration_get_build_commands        (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_build_commands        (IdeConfiguration      *self,
                                                                    const gchar *const    *build_commands);
+IDE_AVAILABLE_IN_ALL
 const gchar * const  *ide_configuration_get_post_install_commands (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_post_install_commands (IdeConfiguration      *self,
                                                                    const gchar *const    
*post_install_commands);
+IDE_AVAILABLE_IN_ALL
 gint                  ide_configuration_get_parallelism           (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_parallelism           (IdeConfiguration      *self,
                                                                    gint                   parallelism);
+IDE_AVAILABLE_IN_ALL
 IdeEnvironment       *ide_configuration_get_environment           (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_environment           (IdeConfiguration      *self,
                                                                    IdeEnvironment        *environment);
+IDE_AVAILABLE_IN_ALL
 IdeConfiguration     *ide_configuration_duplicate                 (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 IdeConfiguration     *ide_configuration_snapshot                  (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 guint                 ide_configuration_get_sequence              (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 const gchar          *ide_configuration_get_app_id                (IdeConfiguration      *self);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_app_id                (IdeConfiguration      *self,
                                                                    const gchar           *app_id);
+IDE_AVAILABLE_IN_ALL
 gboolean              ide_configuration_supports_device           (IdeConfiguration      *self,
                                                                    IdeDevice             *device);
+IDE_AVAILABLE_IN_ALL
 gboolean              ide_configuration_supports_runtime          (IdeConfiguration      *self,
                                                                    IdeRuntime            *runtime);
+IDE_AVAILABLE_IN_ALL
 const gchar          *ide_configuration_get_internal_string       (IdeConfiguration      *self,
                                                                    const gchar           *key);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_internal_string       (IdeConfiguration      *self,
                                                                    const gchar           *key,
                                                                    const gchar           *value);
+IDE_AVAILABLE_IN_ALL
 const gchar * const  *ide_configuration_get_internal_strv         (IdeConfiguration      *self,
                                                                    const gchar           *key);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_internal_strv         (IdeConfiguration      *self,
                                                                    const gchar           *key,
                                                                    const gchar *const    *value);
+IDE_AVAILABLE_IN_ALL
 gboolean              ide_configuration_get_internal_boolean      (IdeConfiguration      *self,
                                                                    const gchar           *key);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_internal_boolean      (IdeConfiguration      *self,
                                                                    const gchar           *key,
                                                                    gboolean               value);
+IDE_AVAILABLE_IN_ALL
 gint                  ide_configuration_get_internal_int          (IdeConfiguration      *self,
                                                                    const gchar           *key);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_internal_int          (IdeConfiguration      *self,
                                                                    const gchar           *key,
                                                                    gint                   value);
+IDE_AVAILABLE_IN_ALL
 gint64                ide_configuration_get_internal_int64        (IdeConfiguration      *self,
                                                                    const gchar           *key);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_internal_int64        (IdeConfiguration      *self,
                                                                    const gchar           *key,
                                                                    gint64                 value);
+IDE_AVAILABLE_IN_ALL
 gpointer              ide_configuration_get_internal_object       (IdeConfiguration      *self,
                                                                    const gchar           *key);
+IDE_AVAILABLE_IN_ALL
 void                  ide_configuration_set_internal_object       (IdeConfiguration      *self,
                                                                    const gchar           *key,
                                                                    gpointer               instance);
diff --git a/src/libide/buildsystem/ide-environment-variable.h 
b/src/libide/buildsystem/ide-environment-variable.h
index 2d6afc6..353252a 100644
--- a/src/libide/buildsystem/ide-environment-variable.h
+++ b/src/libide/buildsystem/ide-environment-variable.h
@@ -20,18 +20,25 @@
 
 #include <glib-object.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_ENVIRONMENT_VARIABLE (ide_environment_variable_get_type())
 
 G_DECLARE_FINAL_TYPE (IdeEnvironmentVariable, ide_environment_variable, IDE, ENVIRONMENT_VARIABLE, GObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeEnvironmentVariable *ide_environment_variable_new       (const gchar            *key,
                                                             const gchar            *value);
+IDE_AVAILABLE_IN_ALL
 const gchar            *ide_environment_variable_get_key   (IdeEnvironmentVariable *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_environment_variable_set_key   (IdeEnvironmentVariable *self,
                                                             const gchar            *key);
+IDE_AVAILABLE_IN_ALL
 const gchar            *ide_environment_variable_get_value (IdeEnvironmentVariable *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_environment_variable_set_value (IdeEnvironmentVariable *self,
                                                             const gchar            *value);
 
diff --git a/src/libide/buildsystem/ide-environment.h b/src/libide/buildsystem/ide-environment.h
index 5a0b820..8bf360e 100644
--- a/src/libide/buildsystem/ide-environment.h
+++ b/src/libide/buildsystem/ide-environment.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "buildsystem/ide-environment-variable.h"
 
 G_BEGIN_DECLS
@@ -28,18 +30,26 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeEnvironment, ide_environment, IDE, ENVIRONMENT, GObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeEnvironment *ide_environment_new         (void);
+IDE_AVAILABLE_IN_ALL
 void            ide_environment_setenv      (IdeEnvironment         *self,
                                              const gchar            *key,
                                              const gchar            *value);
+IDE_AVAILABLE_IN_ALL
 const gchar    *ide_environment_getenv      (IdeEnvironment         *self,
                                              const gchar            *key);
+IDE_AVAILABLE_IN_ALL
 gchar         **ide_environment_get_environ (IdeEnvironment         *self);
+IDE_AVAILABLE_IN_ALL
 void            ide_environment_append      (IdeEnvironment         *self,
                                              IdeEnvironmentVariable *variable);
+IDE_AVAILABLE_IN_ALL
 void            ide_environment_remove      (IdeEnvironment         *self,
                                              IdeEnvironmentVariable *variable);
+IDE_AVAILABLE_IN_ALL
 IdeEnvironment *ide_environment_copy        (IdeEnvironment         *self);
+IDE_AVAILABLE_IN_ALL
 void            ide_environment_copy_into   (IdeEnvironment         *self,
                                              IdeEnvironment         *dest,
                                              gboolean                replace);
diff --git a/src/libide/debugger/ide-debug-manager.h b/src/libide/debugger/ide-debug-manager.h
index a327b43..61daef0 100644
--- a/src/libide/debugger/ide-debug-manager.h
+++ b/src/libide/debugger/ide-debug-manager.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 #include "debugger/ide-debugger-breakpoints.h"
@@ -28,14 +30,20 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeDebugManager, ide_debug_manager, IDE, DEBUG_MANAGER, IdeObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeDebugger            *ide_debug_manager_get_debugger             (IdeDebugManager        *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                ide_debug_manager_get_active               (IdeDebugManager        *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                ide_debug_manager_start                    (IdeDebugManager        *self,
                                                                     IdeRunner              *runner,
                                                                     GError                **error);
+IDE_AVAILABLE_IN_ALL
 void                    ide_debug_manager_stop                     (IdeDebugManager        *self);
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerBreakpoints *ide_debug_manager_get_breakpoints_for_file (IdeDebugManager        *self,
                                                                     GFile                  *file);
+IDE_AVAILABLE_IN_ALL
 gboolean                ide_debug_manager_supports_language        (IdeDebugManager        *self,
                                                                     const gchar            *language_id);
 
diff --git a/src/libide/debugger/ide-debugger-breakpoint.h b/src/libide/debugger/ide-debugger-breakpoint.h
index 865648e..3ace6f1 100644
--- a/src/libide/debugger/ide-debugger-breakpoint.h
+++ b/src/libide/debugger/ide-debugger-breakpoint.h
@@ -20,6 +20,8 @@
 
 #include <glib-object.h>
 
+#include "ide-version-macros.h"
+
 #include "debugger/ide-debugger-frame.h"
 #include "debugger/ide-debugger-types.h"
 
@@ -46,38 +48,61 @@ struct _IdeDebuggerBreakpointClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 gint                    ide_debugger_breakpoint_compare          (IdeDebuggerBreakpoint  *a,
                                                                   IdeDebuggerBreakpoint  *b);
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerBreakpoint  *ide_debugger_breakpoint_new              (const gchar            *id);
+IDE_AVAILABLE_IN_ALL
 const gchar            *ide_debugger_breakpoint_get_id           (IdeDebuggerBreakpoint  *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                ide_debugger_breakpoint_get_enabled      (IdeDebuggerBreakpoint  *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_debugger_breakpoint_set_enabled      (IdeDebuggerBreakpoint  *self,
                                                                   gboolean                enabled);
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerBreakMode    ide_debugger_breakpoint_get_mode         (IdeDebuggerBreakpoint  *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_debugger_breakpoint_set_mode         (IdeDebuggerBreakpoint  *self,
                                                                   IdeDebuggerBreakMode    mode);
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerDisposition  ide_debugger_breakpoint_get_disposition  (IdeDebuggerBreakpoint  *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_debugger_breakpoint_set_disposition  (IdeDebuggerBreakpoint  *self,
                                                                   IdeDebuggerDisposition  disposition);
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerAddress      ide_debugger_breakpoint_get_address      (IdeDebuggerBreakpoint  *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_debugger_breakpoint_set_address      (IdeDebuggerBreakpoint  *self,
                                                                   IdeDebuggerAddress      address);
+IDE_AVAILABLE_IN_ALL
 const gchar            *ide_debugger_breakpoint_get_spec         (IdeDebuggerBreakpoint  *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_debugger_breakpoint_set_spec         (IdeDebuggerBreakpoint  *self,
                                                                   const gchar            *spec);
+IDE_AVAILABLE_IN_ALL
 const gchar            *ide_debugger_breakpoint_get_function     (IdeDebuggerBreakpoint  *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_debugger_breakpoint_set_function     (IdeDebuggerBreakpoint *self,
                                                                   const gchar           *function);
+IDE_AVAILABLE_IN_ALL
 const gchar            *ide_debugger_breakpoint_get_file         (IdeDebuggerBreakpoint  *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_debugger_breakpoint_set_file         (IdeDebuggerBreakpoint  *self,
                                                                   const gchar            *file);
+IDE_AVAILABLE_IN_ALL
 guint                   ide_debugger_breakpoint_get_line         (IdeDebuggerBreakpoint  *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_debugger_breakpoint_set_line         (IdeDebuggerBreakpoint  *self,
                                                                   guint                   line);
+IDE_AVAILABLE_IN_ALL
 gint64                  ide_debugger_breakpoint_get_count        (IdeDebuggerBreakpoint  *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_debugger_breakpoint_set_count        (IdeDebuggerBreakpoint  *self,
                                                                   gint64                  count);
+IDE_AVAILABLE_IN_ALL
 const gchar            *ide_debugger_breakpoint_get_thread       (IdeDebuggerBreakpoint  *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_debugger_breakpoint_set_thread       (IdeDebuggerBreakpoint  *self,
                                                                   const gchar            *thread);
 
diff --git a/src/libide/debugger/ide-debugger-breakpoints.h b/src/libide/debugger/ide-debugger-breakpoints.h
index 912e102..ebd7ff2 100644
--- a/src/libide/debugger/ide-debugger-breakpoints.h
+++ b/src/libide/debugger/ide-debugger-breakpoints.h
@@ -20,6 +20,8 @@
 
 #include <glib-object.h>
 
+#include "ide-version-macros.h"
+
 #include "debugger/ide-debugger-breakpoint.h"
 #include "debugger/ide-debugger-types.h"
 
@@ -29,11 +31,15 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeDebuggerBreakpoints, ide_debugger_breakpoints, IDE, DEBUGGER_BREAKPOINTS, GObject)
 
+IDE_AVAILABLE_IN_ALL
 GFile                 *ide_debugger_breakpoints_get_file      (IdeDebuggerBreakpoints *self);
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerBreakMode   ide_debugger_breakpoints_get_line_mode (IdeDebuggerBreakpoints *self,
                                                                guint                   line);
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerBreakpoint *ide_debugger_breakpoints_get_line      (IdeDebuggerBreakpoints *self,
                                                                guint                   line);
+IDE_AVAILABLE_IN_ALL
 void                   ide_debugger_breakpoints_foreach       (IdeDebuggerBreakpoints *self,
                                                                GFunc                   func,
                                                                gpointer                user_data);
diff --git a/src/libide/debugger/ide-debugger-frame.h b/src/libide/debugger/ide-debugger-frame.h
index 69af81b..a33960a 100644
--- a/src/libide/debugger/ide-debugger-frame.h
+++ b/src/libide/debugger/ide-debugger-frame.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "debugger/ide-debugger-types.h"
 
 G_BEGIN_DECLS
@@ -37,26 +39,41 @@ struct _IdeDebuggerFrameClass
   gpointer _reserved4;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerFrame    *ide_debugger_frame_new          (void);
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerAddress   ide_debugger_frame_get_address  (IdeDebuggerFrame    *self);
+IDE_AVAILABLE_IN_ALL
 void                 ide_debugger_frame_set_address  (IdeDebuggerFrame    *self,
                                                       IdeDebuggerAddress   address);
+IDE_AVAILABLE_IN_ALL
 const gchar         *ide_debugger_frame_get_file     (IdeDebuggerFrame    *self);
+IDE_AVAILABLE_IN_ALL
 void                 ide_debugger_frame_set_file     (IdeDebuggerFrame    *self,
                                                       const gchar         *file);
+IDE_AVAILABLE_IN_ALL
 const gchar         *ide_debugger_frame_get_function (IdeDebuggerFrame    *self);
+IDE_AVAILABLE_IN_ALL
 void                 ide_debugger_frame_set_function (IdeDebuggerFrame    *self,
                                                       const gchar         *function);
+IDE_AVAILABLE_IN_ALL
 const gchar * const *ide_debugger_frame_get_args     (IdeDebuggerFrame    *self);
+IDE_AVAILABLE_IN_ALL
 void                 ide_debugger_frame_set_args     (IdeDebuggerFrame    *self,
                                                       const gchar * const *args);
+IDE_AVAILABLE_IN_ALL
 const gchar         *ide_debugger_frame_get_library  (IdeDebuggerFrame    *self);
+IDE_AVAILABLE_IN_ALL
 void                 ide_debugger_frame_set_library  (IdeDebuggerFrame    *self,
                                                       const gchar         *library);
+IDE_AVAILABLE_IN_ALL
 guint                ide_debugger_frame_get_depth    (IdeDebuggerFrame    *self);
+IDE_AVAILABLE_IN_ALL
 void                 ide_debugger_frame_set_depth    (IdeDebuggerFrame    *self,
                                                       guint                depth);
+IDE_AVAILABLE_IN_ALL
 guint                ide_debugger_frame_get_line     (IdeDebuggerFrame    *self);
+IDE_AVAILABLE_IN_ALL
 void                 ide_debugger_frame_set_line     (IdeDebuggerFrame    *self,
                                                       guint                line);
 
diff --git a/src/libide/debugger/ide-debugger-instruction.h b/src/libide/debugger/ide-debugger-instruction.h
index 45df030..d27d785 100644
--- a/src/libide/debugger/ide-debugger-instruction.h
+++ b/src/libide/debugger/ide-debugger-instruction.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "debugger/ide-debugger-types.h"
 
 G_BEGIN_DECLS
@@ -37,12 +39,18 @@ struct _IdeDebuggerInstructionClass
   gpointer _reserved4;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerInstruction *ide_debugger_instruction_new          (IdeDebuggerAddress      address);
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerAddress      ide_debugger_instruction_get_address  (IdeDebuggerInstruction *self);
+IDE_AVAILABLE_IN_ALL
 const gchar            *ide_debugger_instruction_get_function (IdeDebuggerInstruction *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_debugger_instruction_set_function (IdeDebuggerInstruction *self,
                                                                const gchar            *function);
+IDE_AVAILABLE_IN_ALL
 const gchar            *ide_debugger_instruction_get_display  (IdeDebuggerInstruction *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_debugger_instruction_set_display  (IdeDebuggerInstruction *self,
                                                                const gchar            *display);
 
diff --git a/src/libide/debugger/ide-debugger-library.h b/src/libide/debugger/ide-debugger-library.h
index 9d9b28b..a352bdd 100644
--- a/src/libide/debugger/ide-debugger-library.h
+++ b/src/libide/debugger/ide-debugger-library.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "debugger/ide-debugger-types.h"
 
 G_BEGIN_DECLS
@@ -43,17 +45,26 @@ struct _IdeDebuggerLibraryClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 gint                ide_debugger_library_compare         (IdeDebuggerLibrary            *a,
                                                           IdeDebuggerLibrary            *b);
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerLibrary *ide_debugger_library_new             (const gchar                   *id);
+IDE_AVAILABLE_IN_ALL
 const gchar        *ide_debugger_library_get_id          (IdeDebuggerLibrary            *self);
+IDE_AVAILABLE_IN_ALL
 GPtrArray          *ide_debugger_library_get_ranges      (IdeDebuggerLibrary            *self);
+IDE_AVAILABLE_IN_ALL
 void                ide_debugger_library_add_range       (IdeDebuggerLibrary            *self,
                                                           const IdeDebuggerAddressRange *range);
+IDE_AVAILABLE_IN_ALL
 const gchar        *ide_debugger_library_get_host_name   (IdeDebuggerLibrary            *self);
+IDE_AVAILABLE_IN_ALL
 void                ide_debugger_library_set_host_name   (IdeDebuggerLibrary            *self,
                                                           const gchar                   *host_name);
+IDE_AVAILABLE_IN_ALL
 const gchar        *ide_debugger_library_get_target_name (IdeDebuggerLibrary            *self);
+IDE_AVAILABLE_IN_ALL
 void                ide_debugger_library_set_target_name (IdeDebuggerLibrary            *self,
                                                           const gchar                   *target_name);
 
diff --git a/src/libide/debugger/ide-debugger-register.h b/src/libide/debugger/ide-debugger-register.h
index 3135632..7cdccee 100644
--- a/src/libide/debugger/ide-debugger-register.h
+++ b/src/libide/debugger/ide-debugger-register.h
@@ -20,6 +20,8 @@
 
 #include <glib-object.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_DEBUGGER_REGISTER (ide_debugger_register_get_type())
@@ -41,14 +43,21 @@ struct _IdeDebuggerRegisterClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 gint                 ide_debugger_register_compare   (IdeDebuggerRegister *a,
                                                       IdeDebuggerRegister *b);
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerRegister *ide_debugger_register_new       (const gchar *id);
+IDE_AVAILABLE_IN_ALL
 const gchar         *ide_debugger_register_get_id    (IdeDebuggerRegister *self);
+IDE_AVAILABLE_IN_ALL
 const gchar         *ide_debugger_register_get_name  (IdeDebuggerRegister *self);
+IDE_AVAILABLE_IN_ALL
 void                 ide_debugger_register_set_name  (IdeDebuggerRegister *self,
                                                       const gchar         *name);
+IDE_AVAILABLE_IN_ALL
 const gchar         *ide_debugger_register_get_value (IdeDebuggerRegister *self);
+IDE_AVAILABLE_IN_ALL
 void                 ide_debugger_register_set_value (IdeDebuggerRegister *self,
                                                       const gchar         *value);
 
diff --git a/src/libide/debugger/ide-debugger-thread-group.h b/src/libide/debugger/ide-debugger-thread-group.h
index f9717e5..1503f11 100644
--- a/src/libide/debugger/ide-debugger-thread-group.h
+++ b/src/libide/debugger/ide-debugger-thread-group.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_DEBUGGER_THREAD_GROUP (ide_debugger_thread_group_get_type())
@@ -37,14 +39,21 @@ struct _IdeDebuggerThreadGroupClass
   gpointer _reserved4;
 };
 
+IDE_AVAILABLE_IN_ALL
 gint                    ide_debugger_thread_group_compare       (IdeDebuggerThreadGroup *a,
                                                                  IdeDebuggerThreadGroup *b);
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerThreadGroup *ide_debugger_thread_group_new           (const gchar *id);
+IDE_AVAILABLE_IN_ALL
 const gchar            *ide_debugger_thread_group_get_id        (IdeDebuggerThreadGroup *self);
+IDE_AVAILABLE_IN_ALL
 const gchar            *ide_debugger_thread_group_get_pid       (IdeDebuggerThreadGroup *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_debugger_thread_group_set_pid       (IdeDebuggerThreadGroup *self,
                                                                  const gchar            *pid);
+IDE_AVAILABLE_IN_ALL
 const gchar            *ide_debugger_thread_group_get_exit_code (IdeDebuggerThreadGroup *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_debugger_thread_group_set_exit_code (IdeDebuggerThreadGroup *self,
                                                                  const gchar            *exit_code);
 
diff --git a/src/libide/debugger/ide-debugger-thread.h b/src/libide/debugger/ide-debugger-thread.h
index 1725959..42316f0 100644
--- a/src/libide/debugger/ide-debugger-thread.h
+++ b/src/libide/debugger/ide-debugger-thread.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_DEBUGGER_THREAD (ide_debugger_thread_get_type())
@@ -37,11 +39,16 @@ struct _IdeDebuggerThreadClass
   gpointer _reserved4;
 };
 
+IDE_AVAILABLE_IN_ALL
 gint               ide_debugger_thread_compare   (IdeDebuggerThread *a,
                                                   IdeDebuggerThread *b);
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerThread *ide_debugger_thread_new       (const gchar       *id);
+IDE_AVAILABLE_IN_ALL
 const gchar       *ide_debugger_thread_get_id    (IdeDebuggerThread *self);
+IDE_AVAILABLE_IN_ALL
 const gchar       *ide_debugger_thread_get_group (IdeDebuggerThread *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_thread_set_group (IdeDebuggerThread *self,
                                                   const gchar       *thread_group);
 
diff --git a/src/libide/debugger/ide-debugger-types.h b/src/libide/debugger/ide-debugger-types.h
index 7cd24b1..2058291 100644
--- a/src/libide/debugger/ide-debugger-types.h
+++ b/src/libide/debugger/ide-debugger-types.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 /**
@@ -173,6 +175,7 @@ typedef guint64 IdeDebuggerAddress;
 
 #define IDE_DEBUGGER_ADDRESS_INVALID (0)
 
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerAddress ide_debugger_address_parse (const gchar *string);
 
 typedef struct
@@ -184,16 +187,25 @@ typedef struct
 #define IDE_TYPE_DEBUGGER_ADDRESS_RANGE (ide_debugger_address_range_get_type())
 
 
+IDE_AVAILABLE_IN_ALL
 GType ide_debugger_stream_get_type            (void);
+IDE_AVAILABLE_IN_ALL
 GType ide_debugger_movement_get_type          (void);
+IDE_AVAILABLE_IN_ALL
 GType ide_debugger_stop_reason_get_type       (void);
+IDE_AVAILABLE_IN_ALL
 GType ide_debugger_break_mode_get_type        (void);
+IDE_AVAILABLE_IN_ALL
 GType ide_debugger_disposition_get_type       (void);
+IDE_AVAILABLE_IN_ALL
 GType ide_debugger_address_range_get_type     (void);
+IDE_AVAILABLE_IN_ALL
 GType ide_debugger_breakpoint_change_get_type (void);
 
 
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerAddressRange *ide_debugger_address_range_copy (const IdeDebuggerAddressRange *range);
+IDE_AVAILABLE_IN_ALL
 void                     ide_debugger_address_range_free (IdeDebuggerAddressRange       *range);
 
 
diff --git a/src/libide/debugger/ide-debugger-variable.h b/src/libide/debugger/ide-debugger-variable.h
index 90da3da..76adb17 100644
--- a/src/libide/debugger/ide-debugger-variable.h
+++ b/src/libide/debugger/ide-debugger-variable.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_DEBUGGER_VARIABLE (ide_debugger_variable_get_type())
@@ -41,15 +43,23 @@ struct _IdeDebuggerVariableClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerVariable *ide_debugger_variable_new              (const gchar         *name);
+IDE_AVAILABLE_IN_ALL
 const gchar         *ide_debugger_variable_get_name         (IdeDebuggerVariable *self);
+IDE_AVAILABLE_IN_ALL
 const gchar         *ide_debugger_variable_get_type_name    (IdeDebuggerVariable *self);
+IDE_AVAILABLE_IN_ALL
 void                 ide_debugger_variable_set_type_name    (IdeDebuggerVariable *self,
                                                              const gchar         *type_name);
+IDE_AVAILABLE_IN_ALL
 const gchar         *ide_debugger_variable_get_value        (IdeDebuggerVariable *self);
+IDE_AVAILABLE_IN_ALL
 void                 ide_debugger_variable_set_value        (IdeDebuggerVariable *self,
                                                              const gchar         *value);
+IDE_AVAILABLE_IN_ALL
 gboolean             ide_debugger_variable_get_has_children (IdeDebuggerVariable *self);
+IDE_AVAILABLE_IN_ALL
 void                 ide_debugger_variable_set_has_children (IdeDebuggerVariable *self,
                                                              gboolean             has_children);
 
diff --git a/src/libide/debugger/ide-debugger.h b/src/libide/debugger/ide-debugger.h
index dd3deeb..208e5c3 100644
--- a/src/libide/debugger/ide-debugger.h
+++ b/src/libide/debugger/ide-debugger.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 #include "debugger/ide-debugger-breakpoint.h"
@@ -219,149 +221,199 @@ struct _IdeDebuggerClass
   gpointer _reserved32;
 };
 
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_debugger_supports_runner           (IdeDebugger                    *self,
                                                            IdeRunner                      *runner,
                                                            gint                           *priority);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_prepare                   (IdeDebugger                    *self,
                                                            IdeRunner                      *runner);
+IDE_AVAILABLE_IN_ALL
 GListModel        *ide_debugger_get_breakpoints           (IdeDebugger                    *self);
+IDE_AVAILABLE_IN_ALL
 const gchar       *ide_debugger_get_display_name          (IdeDebugger                    *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_set_display_name          (IdeDebugger                    *self,
                                                            const gchar                    *display_name);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_debugger_get_is_running            (IdeDebugger                    *self);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_debugger_get_can_move              (IdeDebugger                    *self,
                                                            IdeDebuggerMovement             movement);
+IDE_AVAILABLE_IN_ALL
 GListModel        *ide_debugger_get_threads               (IdeDebugger                    *self);
+IDE_AVAILABLE_IN_ALL
 GListModel        *ide_debugger_get_thread_groups         (IdeDebugger                    *self);
+IDE_AVAILABLE_IN_ALL
 IdeDebuggerThread *ide_debugger_get_selected_thread       (IdeDebugger                    *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_disassemble_async         (IdeDebugger                    *self,
                                                            const IdeDebuggerAddressRange  *range,
                                                            GCancellable                   *cancellable,
                                                            GAsyncReadyCallback             callback,
                                                            gpointer                        user_data);
+IDE_AVAILABLE_IN_ALL
 GPtrArray         *ide_debugger_disassemble_finish        (IdeDebugger                    *self,
                                                            GAsyncResult                   *result,
                                                            GError                        **error);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_insert_breakpoint_async   (IdeDebugger                    *self,
                                                            IdeDebuggerBreakpoint          *breakpoint,
                                                            GCancellable                   *cancellable,
                                                            GAsyncReadyCallback             callback,
                                                            gpointer                        user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_debugger_insert_breakpoint_finish  (IdeDebugger                    *self,
                                                            GAsyncResult                   *result,
                                                            GError                        **error);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_interrupt_async           (IdeDebugger                    *self,
                                                            IdeDebuggerThreadGroup         *thread_group,
                                                            GCancellable                   *cancellable,
                                                            GAsyncReadyCallback             callback,
                                                            gpointer                        user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_debugger_interrupt_finish          (IdeDebugger                    *self,
                                                            GAsyncResult                   *result,
                                                            GError                        **error);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_modify_breakpoint_async   (IdeDebugger                    *self,
                                                            IdeDebuggerBreakpointChange     change,
                                                            IdeDebuggerBreakpoint          *breakpoint,
                                                            GCancellable                   *cancellable,
                                                            GAsyncReadyCallback             callback,
                                                            gpointer                        user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_debugger_modify_breakpoint_finish  (IdeDebugger                    *self,
                                                            GAsyncResult                   *result,
                                                            GError                        **error);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_remove_breakpoint_async   (IdeDebugger                    *self,
                                                            IdeDebuggerBreakpoint          *breakpoint,
                                                            GCancellable                   *cancellable,
                                                            GAsyncReadyCallback             callback,
                                                            gpointer                        user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_debugger_remove_breakpoint_finish  (IdeDebugger                    *self,
                                                            GAsyncResult                   *result,
                                                            GError                        **error);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_list_breakpoints_async    (IdeDebugger                    *self,
                                                            GCancellable                   *cancellable,
                                                            GAsyncReadyCallback             callback,
                                                            gpointer                        user_data);
+IDE_AVAILABLE_IN_ALL
 GPtrArray         *ide_debugger_list_breakpoints_finish   (IdeDebugger                    *self,
                                                            GAsyncResult                   *result,
                                                            GError                        **error);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_list_frames_async         (IdeDebugger                    *self,
                                                            IdeDebuggerThread              *thread,
                                                            GCancellable                   *cancellable,
                                                            GAsyncReadyCallback             callback,
                                                            gpointer                        user_data);
+IDE_AVAILABLE_IN_ALL
 GPtrArray         *ide_debugger_list_frames_finish        (IdeDebugger                    *self,
                                                            GAsyncResult                   *result,
                                                            GError                        **error);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_list_locals_async         (IdeDebugger                    *self,
                                                            IdeDebuggerThread              *thread,
                                                            IdeDebuggerFrame               *frame,
                                                            GCancellable                   *cancellable,
                                                            GAsyncReadyCallback             callback,
                                                            gpointer                        user_data);
+IDE_AVAILABLE_IN_ALL
 GPtrArray         *ide_debugger_list_locals_finish        (IdeDebugger                    *self,
                                                            GAsyncResult                   *result,
                                                            GError                        **error);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_list_params_async         (IdeDebugger                    *self,
                                                            IdeDebuggerThread              *thread,
                                                            IdeDebuggerFrame               *frame,
                                                            GCancellable                   *cancellable,
                                                            GAsyncReadyCallback             callback,
                                                            gpointer                        user_data);
+IDE_AVAILABLE_IN_ALL
 GPtrArray         *ide_debugger_list_params_finish        (IdeDebugger                    *self,
                                                            GAsyncResult                   *result,
                                                            GError                        **error);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_list_registers_async      (IdeDebugger                    *self,
                                                            GCancellable                   *cancellable,
                                                            GAsyncReadyCallback             callback,
                                                            gpointer                        user_data);
+IDE_AVAILABLE_IN_ALL
 GPtrArray         *ide_debugger_list_registers_finish     (IdeDebugger                    *self,
                                                            GAsyncResult                   *result,
                                                            GError                        **error);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_move_async                (IdeDebugger                    *self,
                                                            IdeDebuggerMovement             movement,
                                                            GCancellable                   *cancellable,
                                                            GAsyncReadyCallback             callback,
                                                            gpointer                        user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_debugger_move_finish               (IdeDebugger                    *self,
                                                            GAsyncResult                   *result,
                                                            GError                        **error);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_send_signal_async         (IdeDebugger                    *self,
                                                            gint                            signum,
                                                            GCancellable                   *cancellable,
                                                            GAsyncReadyCallback             callback,
                                                            gpointer                        user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_debugger_send_signal_finish        (IdeDebugger                    *self,
                                                            GAsyncResult                   *result,
                                                            GError                        **error);
+IDE_AVAILABLE_IN_ALL
 const gchar       *ide_debugger_locate_binary_at_address  (IdeDebugger                    *self,
                                                            IdeDebuggerAddress              address);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_emit_log                  (IdeDebugger                    *self,
                                                            IdeDebuggerStream               stream,
                                                            GBytes                         *content);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_emit_thread_group_added   (IdeDebugger                    *self,
                                                            IdeDebuggerThreadGroup         *thread_group);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_emit_thread_group_removed (IdeDebugger                    *self,
                                                            IdeDebuggerThreadGroup         *thread_group);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_emit_thread_group_started (IdeDebugger                    *self,
                                                            IdeDebuggerThreadGroup         *thread_group);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_emit_thread_group_exited  (IdeDebugger                    *self,
                                                            IdeDebuggerThreadGroup         *thread_group);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_emit_thread_added         (IdeDebugger                    *self,
                                                            IdeDebuggerThread              *thread);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_emit_thread_removed       (IdeDebugger                    *self,
                                                            IdeDebuggerThread              *thread);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_emit_thread_selected      (IdeDebugger                    *self,
                                                            IdeDebuggerThread              *thread);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_emit_breakpoint_added     (IdeDebugger                    *self,
                                                            IdeDebuggerBreakpoint          *breakpoint);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_emit_breakpoint_modified  (IdeDebugger                    *self,
                                                            IdeDebuggerBreakpoint          *breakpoint);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_emit_breakpoint_removed   (IdeDebugger                    *self,
                                                            IdeDebuggerBreakpoint          *breakpoint);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_emit_running              (IdeDebugger                    *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_emit_stopped              (IdeDebugger                    *self,
                                                            IdeDebuggerStopReason           stop_reason,
                                                            IdeDebuggerBreakpoint          *breakpoint);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_emit_library_loaded       (IdeDebugger                    *self,
                                                            IdeDebuggerLibrary             *library);
+IDE_AVAILABLE_IN_ALL
 void               ide_debugger_emit_library_unloaded     (IdeDebugger                    *self,
                                                            IdeDebuggerLibrary             *library);
 
diff --git a/src/libide/devices/ide-device-manager.h b/src/libide/devices/ide-device-manager.h
index da310ff..8754eb9 100644
--- a/src/libide/devices/ide-device-manager.h
+++ b/src/libide/devices/ide-device-manager.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 #include "devices/ide-device-manager.h"
 
@@ -27,12 +29,17 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeDeviceManager, ide_device_manager, IDE, DEVICE_MANAGER, IdeObject)
 
+IDE_AVAILABLE_IN_ALL
 void       ide_device_manager_add_provider    (IdeDeviceManager  *self,
                                                IdeDeviceProvider *provider);
+IDE_AVAILABLE_IN_ALL
 GPtrArray *ide_device_manager_get_devices     (IdeDeviceManager  *self);
+IDE_AVAILABLE_IN_ALL
 gboolean   ide_device_manager_get_settled     (IdeDeviceManager  *self);
+IDE_AVAILABLE_IN_ALL
 void       ide_device_manager_remove_provider (IdeDeviceManager  *self,
                                                IdeDeviceProvider *provider);
+IDE_AVAILABLE_IN_ALL
 IdeDevice *ide_device_manager_get_device      (IdeDeviceManager  *self,
                                                const gchar       *device_id);
 
diff --git a/src/libide/devices/ide-device-provider.h b/src/libide/devices/ide-device-provider.h
index 7d4434a..8c08fb4 100644
--- a/src/libide/devices/ide-device-provider.h
+++ b/src/libide/devices/ide-device-provider.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "devices/ide-device.h"
 #include "ide-object.h"
 
@@ -35,11 +37,15 @@ struct _IdeDeviceProviderInterface
   GPtrArray *(*get_devices) (IdeDeviceProvider *provider);
 };
 
+IDE_AVAILABLE_IN_ALL
 void       ide_device_provider_emit_device_added   (IdeDeviceProvider *provider,
                                                     IdeDevice         *device);
+IDE_AVAILABLE_IN_ALL
 void       ide_device_provider_emit_device_removed (IdeDeviceProvider *provider,
                                                     IdeDevice         *device);
+IDE_AVAILABLE_IN_ALL
 GPtrArray *ide_device_provider_get_devices         (IdeDeviceProvider *provider);
+IDE_AVAILABLE_IN_ALL
 gboolean   ide_device_provider_get_settled         (IdeDeviceProvider *provider);
 
 G_END_DECLS
diff --git a/src/libide/devices/ide-device.h b/src/libide/devices/ide-device.h
index 094be85..85b6b88 100644
--- a/src/libide/devices/ide-device.h
+++ b/src/libide/devices/ide-device.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 #include "ide-types.h"
 
@@ -42,14 +44,21 @@ struct _IdeDeviceClass
                                          IdeConfiguration *configuration);
 };
 
+IDE_AVAILABLE_IN_ALL
 GQuark       ide_device_error_quark           (void) G_GNUC_CONST;
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_device_get_display_name      (IdeDevice        *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_device_set_display_name      (IdeDevice        *self,
                                                const gchar      *display_name);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_device_get_id                (IdeDevice        *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_device_set_id                (IdeDevice        *self,
                                                const gchar      *id);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_device_get_system_type       (IdeDevice        *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_device_prepare_configuration (IdeDevice        *self,
                                                IdeConfiguration *configuration);
 
diff --git a/src/libide/diagnostics/ide-diagnostic-provider.h 
b/src/libide/diagnostics/ide-diagnostic-provider.h
index 4040943..72818b6 100644
--- a/src/libide/diagnostics/ide-diagnostic-provider.h
+++ b/src/libide/diagnostics/ide-diagnostic-provider.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 G_BEGIN_DECLS
@@ -42,16 +44,20 @@ struct _IdeDiagnosticProviderInterface
                                       GError                **error);
 };
 
+IDE_AVAILABLE_IN_ALL
 void            ide_diagnostic_provider_diagnose_async   (IdeDiagnosticProvider  *self,
                                                           IdeFile                *file,
                                                           IdeBuffer              *buffer,
                                                           GCancellable           *cancellable,
                                                           GAsyncReadyCallback     callback,
                                                           gpointer                user_data);
+IDE_AVAILABLE_IN_ALL
 IdeDiagnostics *ide_diagnostic_provider_diagnose_finish  (IdeDiagnosticProvider  *self,
                                                           GAsyncResult           *result,
                                                           GError                **error);
+IDE_AVAILABLE_IN_ALL
 void            ide_diagnostic_provider_emit_invalidated (IdeDiagnosticProvider  *self);
+IDE_AVAILABLE_IN_ALL
 void            ide_diagnostic_provider_load             (IdeDiagnosticProvider  *self);
 
 G_END_DECLS
diff --git a/src/libide/diagnostics/ide-diagnostic.h b/src/libide/diagnostics/ide-diagnostic.h
index 326418a..eba2fba 100644
--- a/src/libide/diagnostics/ide-diagnostic.h
+++ b/src/libide/diagnostics/ide-diagnostic.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "diagnostics/ide-fixit.h"
 #include "ide-types.h"
 
@@ -37,34 +39,53 @@ typedef enum
   IDE_DIAGNOSTIC_FATAL      = 5,
 } IdeDiagnosticSeverity;
 
+IDE_AVAILABLE_IN_ALL
 IdeSourceLocation     *ide_diagnostic_get_location         (IdeDiagnostic         *self);
+IDE_AVAILABLE_IN_ALL
 GFile                 *ide_diagnostic_get_file             (IdeDiagnostic         *self);
+IDE_AVAILABLE_IN_ALL
 guint                  ide_diagnostic_get_num_fixits       (IdeDiagnostic         *self);
+IDE_AVAILABLE_IN_ALL
 IdeFixit              *ide_diagnostic_get_fixit            (IdeDiagnostic         *self,
                                                             guint                  index);
+IDE_AVAILABLE_IN_ALL
 guint                  ide_diagnostic_get_num_ranges       (IdeDiagnostic         *self);
+IDE_AVAILABLE_IN_ALL
 IdeSourceRange        *ide_diagnostic_get_range            (IdeDiagnostic         *self,
                                                             guint                  index);
+IDE_AVAILABLE_IN_ALL
 IdeDiagnosticSeverity  ide_diagnostic_get_severity         (IdeDiagnostic         *self);
+IDE_AVAILABLE_IN_ALL
 const gchar           *ide_diagnostic_get_text             (IdeDiagnostic         *self);
+IDE_AVAILABLE_IN_ALL
 gchar                 *ide_diagnostic_get_text_for_display (IdeDiagnostic         *self);
+IDE_AVAILABLE_IN_ALL
 GType                  ide_diagnostic_get_type             (void);
+IDE_AVAILABLE_IN_ALL
 IdeDiagnostic         *ide_diagnostic_ref                  (IdeDiagnostic         *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_diagnostic_unref                (IdeDiagnostic         *self);
+IDE_AVAILABLE_IN_ALL
 IdeDiagnostic         *ide_diagnostic_new                  (IdeDiagnosticSeverity  severity,
                                                             const gchar           *text,
                                                             IdeSourceLocation     *location);
+IDE_AVAILABLE_IN_ALL
 void                   ide_diagnostic_add_range            (IdeDiagnostic         *self,
                                                             IdeSourceRange        *range);
+IDE_AVAILABLE_IN_ALL
 void                   ide_diagnostic_take_fixit           (IdeDiagnostic         *self,
                                                             IdeFixit              *fixit);
+IDE_AVAILABLE_IN_ALL
 void                   ide_diagnostic_take_range           (IdeDiagnostic         *self,
                                                             IdeSourceRange        *range);
+IDE_AVAILABLE_IN_ALL
 gint                   ide_diagnostic_compare              (const IdeDiagnostic   *a,
                                                             const IdeDiagnostic   *b);
+IDE_AVAILABLE_IN_ALL
 guint                  ide_diagnostic_hash                 (IdeDiagnostic         *self);
 
 
+IDE_AVAILABLE_IN_ALL
 const gchar           *ide_diagnostic_severity_to_string   (IdeDiagnosticSeverity severity);
 
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (IdeDiagnostic, ide_diagnostic_unref)
diff --git a/src/libide/diagnostics/ide-diagnostics-manager.h 
b/src/libide/diagnostics/ide-diagnostics-manager.h
index ec0e437..f6c1717 100644
--- a/src/libide/diagnostics/ide-diagnostics-manager.h
+++ b/src/libide/diagnostics/ide-diagnostics-manager.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 G_BEGIN_DECLS
@@ -28,11 +30,15 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeDiagnosticsManager, ide_diagnostics_manager, IDE, DIAGNOSTICS_MANAGER, IdeObject)
 
+IDE_AVAILABLE_IN_ALL
 gboolean        ide_diagnostics_manager_get_busy                 (IdeDiagnosticsManager *self);
+IDE_AVAILABLE_IN_ALL
 IdeDiagnostics *ide_diagnostics_manager_get_diagnostics_for_file (IdeDiagnosticsManager *self,
                                                                   GFile                 *file);
+IDE_AVAILABLE_IN_ALL
 guint           ide_diagnostics_manager_get_sequence_for_file    (IdeDiagnosticsManager *self,
                                                                   GFile                 *file);
+IDE_AVAILABLE_IN_ALL
 void            ide_diagnostics_manager_update_group_by_file     (IdeDiagnosticsManager *self,
                                                                   IdeBuffer             *buffer,
                                                                   GFile                 *new_file);
diff --git a/src/libide/diagnostics/ide-diagnostics.h b/src/libide/diagnostics/ide-diagnostics.h
index 27774d5..3623446 100644
--- a/src/libide/diagnostics/ide-diagnostics.h
+++ b/src/libide/diagnostics/ide-diagnostics.h
@@ -18,21 +18,31 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 
 G_BEGIN_DECLS
 
 #define IDE_TYPE_DIAGNOSTICS (ide_diagnostics_get_type())
 
+IDE_AVAILABLE_IN_ALL
 GType           ide_diagnostics_get_type (void);
+IDE_AVAILABLE_IN_ALL
 IdeDiagnostics *ide_diagnostics_ref      (IdeDiagnostics *self);
+IDE_AVAILABLE_IN_ALL
 void            ide_diagnostics_unref    (IdeDiagnostics *self);
+IDE_AVAILABLE_IN_ALL
 gsize           ide_diagnostics_get_size (IdeDiagnostics *self);
+IDE_AVAILABLE_IN_ALL
 IdeDiagnostic  *ide_diagnostics_index    (IdeDiagnostics *self,
                                           gsize           index);
+IDE_AVAILABLE_IN_ALL
 void            ide_diagnostics_merge    (IdeDiagnostics *self,
                                           IdeDiagnostics *other);
+IDE_AVAILABLE_IN_ALL
 IdeDiagnostics *ide_diagnostics_new      (GPtrArray      *ar);
+IDE_AVAILABLE_IN_ALL
 void            ide_diagnostics_add      (IdeDiagnostics *self,
                                           IdeDiagnostic  *diagnostic);
 
diff --git a/src/libide/diagnostics/ide-source-location.h b/src/libide/diagnostics/ide-source-location.h
index 01fe8fb..d03fcb3 100644
--- a/src/libide/diagnostics/ide-source-location.h
+++ b/src/libide/diagnostics/ide-source-location.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 
 #include "util/ide-uri.h"
@@ -26,24 +28,36 @@ G_BEGIN_DECLS
 
 #define IDE_TYPE_SOURCE_LOCATION (ide_source_location_get_type())
 
+IDE_AVAILABLE_IN_ALL
 GType              ide_source_location_get_type        (void);
+IDE_AVAILABLE_IN_ALL
 IdeSourceLocation *ide_source_location_ref             (IdeSourceLocation       *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_source_location_unref           (IdeSourceLocation       *self);
+IDE_AVAILABLE_IN_ALL
 IdeSourceLocation *ide_source_location_new             (IdeFile                 *file,
                                                         guint                    line,
                                                         guint                    line_offset,
                                                         guint                    offset);
+IDE_AVAILABLE_IN_ALL
 IdeSourceLocation *ide_source_location_new_for_path    (IdeContext              *context,
                                                         const gchar             *path,
                                                         guint                    line,
                                                         guint                    line_offset);
+IDE_AVAILABLE_IN_ALL
 guint              ide_source_location_get_line        (IdeSourceLocation       *self);
+IDE_AVAILABLE_IN_ALL
 guint              ide_source_location_get_line_offset (IdeSourceLocation       *self);
+IDE_AVAILABLE_IN_ALL
 guint              ide_source_location_get_offset      (IdeSourceLocation       *self);
+IDE_AVAILABLE_IN_ALL
 IdeFile           *ide_source_location_get_file        (IdeSourceLocation       *self);
+IDE_AVAILABLE_IN_ALL
 IdeUri            *ide_source_location_get_uri         (IdeSourceLocation       *self);
+IDE_AVAILABLE_IN_ALL
 gint               ide_source_location_compare         (const IdeSourceLocation *a,
                                                         const IdeSourceLocation *b);
+IDE_AVAILABLE_IN_ALL
 guint              ide_source_location_hash            (IdeSourceLocation       *self);
 
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (IdeSourceLocation, ide_source_location_unref)
diff --git a/src/libide/diagnostics/ide-source-range.h b/src/libide/diagnostics/ide-source-range.h
index 4cbb078..c803a89 100644
--- a/src/libide/diagnostics/ide-source-range.h
+++ b/src/libide/diagnostics/ide-source-range.h
@@ -18,17 +18,25 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 
 G_BEGIN_DECLS
 
 #define IDE_TYPE_SOURCE_RANGE (ide_source_range_get_type())
 
+IDE_AVAILABLE_IN_ALL
 GType              ide_source_range_get_type  (void);
+IDE_AVAILABLE_IN_ALL
 IdeSourceRange    *ide_source_range_ref       (IdeSourceRange    *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_source_range_unref     (IdeSourceRange    *self);
+IDE_AVAILABLE_IN_ALL
 IdeSourceLocation *ide_source_range_get_begin (IdeSourceRange    *self);
+IDE_AVAILABLE_IN_ALL
 IdeSourceLocation *ide_source_range_get_end   (IdeSourceRange    *self);
+IDE_AVAILABLE_IN_ALL
 IdeSourceRange    *ide_source_range_new       (IdeSourceLocation *begin,
                                                IdeSourceLocation *end);
 
diff --git a/src/libide/doap/ide-doap-person.h b/src/libide/doap/ide-doap-person.h
index eac0637..764742a 100644
--- a/src/libide/doap/ide-doap-person.h
+++ b/src/libide/doap/ide-doap-person.h
@@ -20,17 +20,24 @@
 
 #include <glib-object.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_DOAP_PERSON (ide_doap_person_get_type())
 
 G_DECLARE_FINAL_TYPE (IdeDoapPerson, ide_doap_person, IDE, DOAP_PERSON, GObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeDoapPerson *ide_doap_person_new       (void);
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_doap_person_get_name  (IdeDoapPerson *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_doap_person_set_name  (IdeDoapPerson *self,
                                           const gchar   *name);
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_doap_person_get_email (IdeDoapPerson *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_doap_person_set_email (IdeDoapPerson *self,
                                           const gchar   *email);
 
diff --git a/src/libide/doap/ide-doap.h b/src/libide/doap/ide-doap.h
index 16ee05e..315502f 100644
--- a/src/libide/doap/ide-doap.h
+++ b/src/libide/doap/ide-doap.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "doap/ide-doap-person.h"
 
 G_BEGIN_DECLS
@@ -34,24 +36,37 @@ typedef enum
   IDE_DOAP_ERROR_INVALID_FORMAT = 1,
 } IdeDoapError;
 
+IDE_AVAILABLE_IN_ALL
 IdeDoap       *ide_doap_new               (void);
+IDE_AVAILABLE_IN_ALL
 GQuark         ide_doap_error_quark       (void);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_doap_load_from_file    (IdeDoap        *self,
                                            GFile          *file,
                                            GCancellable   *cancellable,
                                            GError        **error);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_doap_load_from_data    (IdeDoap        *self,
                                            const gchar    *data,
                                            gsize           length,
                                            GError        **error);
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_doap_get_name          (IdeDoap        *self);
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_doap_get_shortdesc     (IdeDoap        *self);
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_doap_get_description   (IdeDoap        *self);
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_doap_get_bug_database  (IdeDoap        *self);
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_doap_get_download_page (IdeDoap        *self);
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_doap_get_homepage      (IdeDoap        *self);
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_doap_get_category      (IdeDoap        *self);
+IDE_AVAILABLE_IN_ALL
 gchar        **ide_doap_get_languages     (IdeDoap        *self);
+IDE_AVAILABLE_IN_ALL
 GList         *ide_doap_get_maintainers   (IdeDoap        *self);
 
 G_END_DECLS
diff --git a/src/libide/documentation/ide-documentation-info.h 
b/src/libide/documentation/ide-documentation-info.h
index df01d2f..313518c 100644
--- a/src/libide/documentation/ide-documentation-info.h
+++ b/src/libide/documentation/ide-documentation-info.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "documentation/ide-documentation-proposal.h"
 
 G_BEGIN_DECLS
@@ -32,13 +34,19 @@ typedef enum {
   IDE_DOCUMENTATION_CONTEXT_LAST,
 } IdeDocumentationContext;
 
+IDE_AVAILABLE_IN_ALL
 IdeDocumentationInfo     *ide_documentation_info_new            (const gchar                 *input,
                                                                  IdeDocumentationContext      context);
+IDE_AVAILABLE_IN_ALL
 void                      ide_documentation_info_take_proposal  (IdeDocumentationInfo        *self,
                                                                  IdeDocumentationProposal    *proposal);
+IDE_AVAILABLE_IN_ALL
 IdeDocumentationContext   ide_documentation_info_get_context    (IdeDocumentationInfo        *self);
+IDE_AVAILABLE_IN_ALL
 gchar                    *ide_documentation_info_get_input      (IdeDocumentationInfo        *self);
+IDE_AVAILABLE_IN_ALL
 guint                     ide_documentation_info_get_size       (IdeDocumentationInfo        *self);
+IDE_AVAILABLE_IN_ALL
 IdeDocumentationProposal *ide_documentation_info_get_proposal   (IdeDocumentationInfo        *self,
                                                                  guint                        index);
 
diff --git a/src/libide/documentation/ide-documentation-proposal.h 
b/src/libide/documentation/ide-documentation-proposal.h
index e5e0058..cee1362 100644
--- a/src/libide/documentation/ide-documentation-proposal.h
+++ b/src/libide/documentation/ide-documentation-proposal.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 G_BEGIN_DECLS
@@ -33,13 +35,19 @@ typedef struct _IdeDocumentationProposalClass IdeDocumentationProposalClass;
 
 G_DECLARE_DERIVABLE_TYPE (IdeDocumentationProposal, ide_documentation_proposal, IDE, DOCUMENTATION_PROPOSAL, 
GObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeDocumentationProposal *ide_documentation_proposal_new            (const gchar                *url);
+IDE_AVAILABLE_IN_ALL
 void                      ide_documentation_proposal_set_header     (IdeDocumentationProposal   *self,
                                                                      const gchar                *header);
+IDE_AVAILABLE_IN_ALL
 void                      ide_documentation_proposal_set_text       (IdeDocumentationProposal   *self,
                                                                      const gchar                *text);
+IDE_AVAILABLE_IN_ALL
 const gchar              *ide_documentation_proposal_get_header     (IdeDocumentationProposal   *self);
+IDE_AVAILABLE_IN_ALL
 const gchar              *ide_documentation_proposal_get_text       (IdeDocumentationProposal   *self);
+IDE_AVAILABLE_IN_ALL
 const gchar              *ide_documentation_proposal_get_uri        (IdeDocumentationProposal   *self);
 
 
diff --git a/src/libide/documentation/ide-documentation-provider.h 
b/src/libide/documentation/ide-documentation-provider.h
index ea4591e..0f7665c 100644
--- a/src/libide/documentation/ide-documentation-provider.h
+++ b/src/libide/documentation/ide-documentation-provider.h
@@ -20,6 +20,8 @@
 
 #include <gtksourceview/gtksource.h>
 
+#include "ide-version-macros.h"
+
 #include "documentation/ide-documentation-info.h"
 
 G_BEGIN_DECLS
@@ -38,9 +40,12 @@ struct _IdeDocumentationProviderInterface
   IdeDocumentationContext (*get_context)     (IdeDocumentationProvider    *self);
 };
 
+IDE_AVAILABLE_IN_ALL
 gchar                  *ide_documentation_provider_get_name          (IdeDocumentationProvider    *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_documentation_provider_get_info          (IdeDocumentationProvider    *self,
                                                                       IdeDocumentationInfo        *info);
+IDE_AVAILABLE_IN_ALL
 IdeDocumentationContext ide_documentation_provider_get_context       (IdeDocumentationProvider    *self);
 
 
diff --git a/src/libide/documentation/ide-documentation.h b/src/libide/documentation/ide-documentation.h
index 83424a9..3ab0626 100644
--- a/src/libide/documentation/ide-documentation.h
+++ b/src/libide/documentation/ide-documentation.h
@@ -20,6 +20,8 @@
 
 #include <gtksourceview/gtksource.h>
 
+#include "ide-version-macros.h"
+
 #include "documentation/ide-documentation-info.h"
 
 G_BEGIN_DECLS
@@ -31,6 +33,7 @@ G_DECLARE_FINAL_TYPE (IdeDocumentation,
                       IDE, DOCUMENTATION,
                       IdeObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeDocumentationInfo    *ide_documentation_get_info    (IdeDocumentation        *self,
                                                         const gchar             *input,
                                                         IdeDocumentationContext  context);
diff --git a/src/libide/editor/ide-editor-addin.h b/src/libide/editor/ide-editor-addin.h
index 582ef31..8c7acf6 100644
--- a/src/libide/editor/ide-editor-addin.h
+++ b/src/libide/editor/ide-editor-addin.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "editor/ide-editor-perspective.h"
 #include "layout/ide-layout-view.h"
 
@@ -39,13 +41,17 @@ struct _IdeEditorAddinInterface
                     IdeLayoutView        *view);
 };
 
+IDE_AVAILABLE_IN_ALL
 void ide_editor_addin_load     (IdeEditorAddin       *self,
                                 IdeEditorPerspective *perspective);
+IDE_AVAILABLE_IN_ALL
 void ide_editor_addin_unload   (IdeEditorAddin       *self,
                                 IdeEditorPerspective *perspective);
+IDE_AVAILABLE_IN_ALL
 void ide_editor_addin_view_set (IdeEditorAddin       *self,
                                 IdeLayoutView        *view);
 
+IDE_AVAILABLE_IN_ALL
 IdeEditorAddin *ide_editor_addin_find_by_module_name (IdeEditorPerspective *editor,
                                                       const gchar          *module_name);
 
diff --git a/src/libide/editor/ide-editor-perspective.h b/src/libide/editor/ide-editor-perspective.h
index 658bd24..2f24596 100644
--- a/src/libide/editor/ide-editor-perspective.h
+++ b/src/libide/editor/ide-editor-perspective.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "diagnostics/ide-source-location.h"
 #include "editor/ide-editor-sidebar.h"
 #include "editor/ide-editor-utilities.h"
@@ -31,17 +33,26 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeEditorPerspective, ide_editor_perspective, IDE, EDITOR_PERSPECTIVE, IdeLayout)
 
+IDE_AVAILABLE_IN_ALL
 void                       ide_editor_perspective_focus_buffer                  (IdeEditorPerspective *self,
                                                                                  IdeBuffer            
*buffer);
+IDE_AVAILABLE_IN_ALL
 void                       ide_editor_perspective_focus_buffer_in_current_stack (IdeEditorPerspective *self,
                                                                                  IdeBuffer            
*buffer);
+IDE_AVAILABLE_IN_ALL
 void                       ide_editor_perspective_focus_location                (IdeEditorPerspective *self,
                                                                                  IdeSourceLocation    
*location);
+IDE_AVAILABLE_IN_ALL
 IdeLayoutView             *ide_editor_perspective_get_active_view               (IdeEditorPerspective *self);
+IDE_AVAILABLE_IN_ALL
 IdeLayoutGrid             *ide_editor_perspective_get_grid                      (IdeEditorPerspective *self);
+IDE_AVAILABLE_IN_ALL
 IdeEditorSidebar          *ide_editor_perspective_get_sidebar                   (IdeEditorPerspective *self);
+IDE_AVAILABLE_IN_ALL
 IdeLayoutTransientSidebar *ide_editor_perspective_get_transient_sidebar         (IdeEditorPerspective *self);
+IDE_AVAILABLE_IN_ALL
 GtkWidget                 *ide_editor_perspective_get_utilities                 (IdeEditorPerspective *self);
+IDE_AVAILABLE_IN_ALL
 GtkWidget                 *ide_editor_perspective_get_overlay                   (IdeEditorPerspective *self);
 
 G_END_DECLS
diff --git a/src/libide/editor/ide-editor-search.h b/src/libide/editor/ide-editor-search.h
index baa1d6d..307875a 100644
--- a/src/libide/editor/ide-editor-search.h
+++ b/src/libide/editor/ide-editor-search.h
@@ -20,6 +20,8 @@
 
 #include <gtksourceview/gtksource.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 typedef enum
@@ -54,51 +56,82 @@ typedef enum
 
 G_DECLARE_FINAL_TYPE (IdeEditorSearch, ide_editor_search, IDE, EDITOR_SEARCH, GObject)
 
+IDE_AVAILABLE_IN_ALL
 GType                  ide_editor_search_direction_get_type           (void);
+IDE_AVAILABLE_IN_ALL
 GType                  ide_editor_search_select_get_type              (void);
+IDE_AVAILABLE_IN_ALL
 IdeEditorSearch       *ide_editor_search_new                          (GtkSourceView             *view);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_editor_search_get_active                   (IdeEditorSearch           *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_editor_search_set_case_sensitive           (IdeEditorSearch           *self,
                                                                        gboolean                   
case_sensitive);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_editor_search_get_case_sensitive           (IdeEditorSearch           *self);
+IDE_AVAILABLE_IN_ALL
 IdeEditorSearchSelect  ide_editor_search_get_extend_selection         (IdeEditorSearch           *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_editor_search_set_extend_selection         (IdeEditorSearch           *self,
                                                                        IdeEditorSearchSelect      
extend_selection);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_editor_search_get_reverse                  (IdeEditorSearch           *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_editor_search_set_reverse                  (IdeEditorSearch           *self,
                                                                        gboolean                   reverse);
+IDE_AVAILABLE_IN_ALL
 void                   ide_editor_search_set_search_text              (IdeEditorSearch           *self,
                                                                        const gchar               
*search_text);
+IDE_AVAILABLE_IN_ALL
 const gchar           *ide_editor_search_get_search_text              (IdeEditorSearch           *self);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_editor_search_get_search_text_invalid      (IdeEditorSearch           *self,
                                                                        guint                     
*invalid_begin,
                                                                        guint                     
*invalid_end,
                                                                        GError                   **error);
+IDE_AVAILABLE_IN_ALL
 void                   ide_editor_search_set_visible                  (IdeEditorSearch           *self,
                                                                        gboolean                   visible);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_editor_search_get_visible                  (IdeEditorSearch           *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_editor_search_set_regex_enabled            (IdeEditorSearch           *self,
                                                                        gboolean                   
regex_enabled);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_editor_search_get_regex_enabled            (IdeEditorSearch           *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_editor_search_set_replacement_text         (IdeEditorSearch           *self,
                                                                        const gchar               
*replacement_text);
+IDE_AVAILABLE_IN_ALL
 const gchar           *ide_editor_search_get_replacement_text         (IdeEditorSearch           *self);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_editor_search_get_replacement_text_invalid (IdeEditorSearch           *self,
                                                                        guint                     
*invalid_begin,
                                                                        guint                     
*invalid_end);
+IDE_AVAILABLE_IN_ALL
 void                   ide_editor_search_set_at_word_boundaries       (IdeEditorSearch           *self,
                                                                        gboolean                   
at_word_boundaries);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_editor_search_get_at_word_boundaries       (IdeEditorSearch           *self);
+IDE_AVAILABLE_IN_ALL
 guint                  ide_editor_search_get_repeat                   (IdeEditorSearch           *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_editor_search_set_repeat                   (IdeEditorSearch           *self,
                                                                        guint                      repeat);
+IDE_AVAILABLE_IN_ALL
 guint                  ide_editor_search_get_match_count              (IdeEditorSearch           *self);
+IDE_AVAILABLE_IN_ALL
 guint                  ide_editor_search_get_match_position           (IdeEditorSearch           *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_editor_search_move                         (IdeEditorSearch           *self,
                                                                        IdeEditorSearchDirection   direction);
+IDE_AVAILABLE_IN_ALL
 void                   ide_editor_search_replace                      (IdeEditorSearch           *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_editor_search_replace_all                  (IdeEditorSearch           *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_editor_search_begin_interactive            (IdeEditorSearch           *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_editor_search_end_interactive              (IdeEditorSearch           *self);
 
 G_END_DECLS
diff --git a/src/libide/editor/ide-editor-sidebar.h b/src/libide/editor/ide-editor-sidebar.h
index bd446ee..fcb9967 100644
--- a/src/libide/editor/ide-editor-sidebar.h
+++ b/src/libide/editor/ide-editor-sidebar.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "layout/ide-layout-pane.h"
 
 G_BEGIN_DECLS
@@ -26,10 +28,14 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeEditorSidebar, ide_editor_sidebar, IDE, EDITOR_SIDEBAR, IdeLayoutPane)
 
+IDE_AVAILABLE_IN_ALL
 GtkWidget   *ide_editor_sidebar_new            (void);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_editor_sidebar_get_section_id (IdeEditorSidebar *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_editor_sidebar_set_section_id (IdeEditorSidebar *self,
                                                 const gchar      *section_id);
+IDE_AVAILABLE_IN_ALL
 void         ide_editor_sidebar_add_section    (IdeEditorSidebar *self,
                                                 const gchar      *id,
                                                 const gchar      *title,
diff --git a/src/libide/editor/ide-editor-utilities.h b/src/libide/editor/ide-editor-utilities.h
index 1645a90..75ce0f9 100644
--- a/src/libide/editor/ide-editor-utilities.h
+++ b/src/libide/editor/ide-editor-utilities.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "layout/ide-layout-pane.h"
 
 G_BEGIN_DECLS
diff --git a/src/libide/editor/ide-editor-view-addin.h b/src/libide/editor/ide-editor-view-addin.h
index 3d8e5f5..b8e9eb6 100644
--- a/src/libide/editor/ide-editor-view-addin.h
+++ b/src/libide/editor/ide-editor-view-addin.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "editor/ide-editor-view.h"
 #include "layout/ide-layout-stack.h"
 
@@ -41,14 +43,19 @@ struct _IdeEditorViewAddinInterface
                               IdeLayoutStack     *stack);
 };
 
+IDE_AVAILABLE_IN_ALL
 void                ide_editor_view_addin_load                (IdeEditorViewAddin *self,
                                                                IdeEditorView      *view);
+IDE_AVAILABLE_IN_ALL
 void                ide_editor_view_addin_unload              (IdeEditorViewAddin *self,
                                                                IdeEditorView      *view);
+IDE_AVAILABLE_IN_ALL
 void                ide_editor_view_addin_stack_set           (IdeEditorViewAddin *self,
                                                                IdeLayoutStack     *stack);
+IDE_AVAILABLE_IN_ALL
 void                ide_editor_view_addin_language_changed    (IdeEditorViewAddin *self,
                                                                const gchar        *language_id);
+IDE_AVAILABLE_IN_ALL
 IdeEditorViewAddin *ide_editor_view_addin_find_by_module_name (IdeEditorView      *view,
                                                                const gchar        *module_name);
 
diff --git a/src/libide/editor/ide-editor-view.h b/src/libide/editor/ide-editor-view.h
index 48e85e1..2abc527 100644
--- a/src/libide/editor/ide-editor-view.h
+++ b/src/libide/editor/ide-editor-view.h
@@ -20,6 +20,8 @@
 
 #include <gtksourceview/gtksource.h>
 
+#include "ide-version-macros.h"
+
 #include "buffers/ide-buffer.h"
 #include "editor/ide-editor-search.h"
 #include "layout/ide-layout-view.h"
@@ -31,27 +33,43 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeEditorView, ide_editor_view, IDE, EDITOR_VIEW, IdeLayoutView)
 
+IDE_AVAILABLE_IN_ALL
 IdeBuffer         *ide_editor_view_get_buffer                  (IdeEditorView     *self);
+IDE_AVAILABLE_IN_ALL
 IdeSourceView     *ide_editor_view_get_view                    (IdeEditorView     *self);
+IDE_AVAILABLE_IN_ALL
 IdeEditorSearch   *ide_editor_view_get_search                  (IdeEditorView     *self);
+IDE_AVAILABLE_IN_ALL
 const gchar       *ide_editor_view_get_language_id             (IdeEditorView     *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_editor_view_scroll_to_line              (IdeEditorView     *self,
                                                                 guint              line);
+IDE_AVAILABLE_IN_ALL
 void               ide_editor_view_scroll_to_line_offset       (IdeEditorView     *self,
                                                                 guint              line,
                                                                 guint              line_offset);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_editor_view_get_auto_hide_map           (IdeEditorView     *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_editor_view_set_auto_hide_map           (IdeEditorView     *self,
                                                                 gboolean           auto_hide_map);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_editor_view_get_show_map                (IdeEditorView     *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_editor_view_set_show_map                (IdeEditorView     *self,
                                                                 gboolean           show_map);
+IDE_AVAILABLE_IN_ALL
 GtkSourceLanguage *ide_editor_view_get_language                (IdeEditorView     *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_editor_view_set_language                (IdeEditorView     *self,
                                                                 GtkSourceLanguage *language);
+IDE_AVAILABLE_IN_ALL
 void               ide_editor_view_move_next_error             (IdeEditorView     *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_editor_view_move_previous_error         (IdeEditorView     *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_editor_view_move_next_search_result     (IdeEditorView     *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_editor_view_move_previous_search_result (IdeEditorView     *self);
 
 G_END_DECLS
diff --git a/src/libide/files/ide-file-settings.h b/src/libide/files/ide-file-settings.h
index 2b6d8e4..0bfc409 100644
--- a/src/libide/files/ide-file-settings.h
+++ b/src/libide/files/ide-file-settings.h
@@ -20,6 +20,8 @@
 
 #include <gtksourceview/gtksource.h>
 
+#include "ide-version-macros.h"
+
 #include "files/ide-file.h"
 #include "files/ide-indent-style.h"
 #include "ide-object.h"
@@ -36,8 +38,11 @@ struct _IdeFileSettingsClass
   IdeObjectClass parent;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeFileSettings *ide_file_settings_new         (IdeFile         *file);
+IDE_AVAILABLE_IN_ALL
 IdeFile         *ide_file_settings_get_file    (IdeFileSettings *self);
+IDE_AVAILABLE_IN_ALL
 gboolean         ide_file_settings_get_settled (IdeFileSettings *self);
 
 #define IDE_FILE_SETTINGS_PROPERTY(_1, name, _2, ret_type, _3, _4, _5, _6) \
diff --git a/src/libide/files/ide-file.h b/src/libide/files/ide-file.h
index ac89eeb..6d940c6 100644
--- a/src/libide/files/ide-file.h
+++ b/src/libide/files/ide-file.h
@@ -20,6 +20,8 @@
 
 #include <gtksourceview/gtksource.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 G_BEGIN_DECLS
@@ -30,33 +32,48 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeFile, ide_file, IDE, FILE, IdeObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeFile           *ide_file_new                  (IdeContext           *context,
                                                   GFile                *file);
+IDE_AVAILABLE_IN_ALL
 IdeFile           *ide_file_new_for_path         (IdeContext           *context,
                                                   const gchar          *path);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_file_get_is_temporary     (IdeFile              *self);
+IDE_AVAILABLE_IN_ALL
 guint              ide_file_get_temporary_id     (IdeFile              *self);
+IDE_AVAILABLE_IN_ALL
 GtkSourceLanguage *ide_file_get_language         (IdeFile              *self);
+IDE_AVAILABLE_IN_ALL
 const gchar       *ide_file_get_language_id      (IdeFile              *self);
+IDE_AVAILABLE_IN_ALL
 GFile             *ide_file_get_file             (IdeFile              *self);
+IDE_AVAILABLE_IN_ALL
 guint              ide_file_hash                 (IdeFile              *self);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_file_equal                (IdeFile              *self,
                                                   IdeFile              *other);
+IDE_AVAILABLE_IN_ALL
 const gchar       *ide_file_get_path             (IdeFile              *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_file_load_settings_async  (IdeFile              *self,
                                                   GCancellable         *cancellable,
                                                   GAsyncReadyCallback   callback,
                                                   gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 IdeFileSettings   *ide_file_load_settings_finish (IdeFile              *self,
                                                   GAsyncResult         *result,
                                                   GError              **error);
+IDE_AVAILABLE_IN_ALL
 void               ide_file_find_other_async     (IdeFile              *self,
                                                   GCancellable         *cancellable,
                                                   GAsyncReadyCallback   callback,
                                                   gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 IdeFile           *ide_file_find_other_finish    (IdeFile              *self,
                                                   GAsyncResult         *result,
                                                   GError              **error);
+IDE_AVAILABLE_IN_ALL
 gint               ide_file_compare              (const IdeFile        *a,
                                                   const IdeFile        *b);
 const gchar       *_ide_file_get_content_type    (IdeFile              *self) G_GNUC_INTERNAL;
diff --git a/src/libide/genesis/ide-genesis-addin.h b/src/libide/genesis/ide-genesis-addin.h
index 26f86ef..5c84f06 100644
--- a/src/libide/genesis/ide-genesis-addin.h
+++ b/src/libide/genesis/ide-genesis-addin.h
@@ -20,6 +20,8 @@
 
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_GENESIS_ADDIN (ide_genesis_addin_get_type())
@@ -45,16 +47,24 @@ struct _IdeGenesisAddinInterface
   gint       (*get_priority)   (IdeGenesisAddin      *self);
 };
 
+IDE_AVAILABLE_IN_ALL
 gchar     *ide_genesis_addin_get_label      (IdeGenesisAddin      *self);
+IDE_AVAILABLE_IN_ALL
 gchar     *ide_genesis_addin_get_next_label (IdeGenesisAddin      *self);
+IDE_AVAILABLE_IN_ALL
 gint       ide_genesis_addin_get_priority   (IdeGenesisAddin      *self);
+IDE_AVAILABLE_IN_ALL
 gchar     *ide_genesis_addin_get_title      (IdeGenesisAddin      *self);
+IDE_AVAILABLE_IN_ALL
 gchar     *ide_genesis_addin_get_icon_name  (IdeGenesisAddin      *self);
+IDE_AVAILABLE_IN_ALL
 GtkWidget *ide_genesis_addin_get_widget     (IdeGenesisAddin      *self);
+IDE_AVAILABLE_IN_ALL
 void       ide_genesis_addin_run_async      (IdeGenesisAddin      *self,
                                              GCancellable         *cancellable,
                                              GAsyncReadyCallback   callback,
                                              gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean   ide_genesis_addin_run_finish     (IdeGenesisAddin      *self,
                                              GAsyncResult         *result,
                                              GError              **error);
diff --git a/src/libide/highlighting/ide-highlight-engine.h b/src/libide/highlighting/ide-highlight-engine.h
index 2be2412..fd9abf2 100644
--- a/src/libide/highlighting/ide-highlight-engine.h
+++ b/src/libide/highlighting/ide-highlight-engine.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 #include "buffers/ide-buffer.h"
 #include "highlighting/ide-highlighter.h"
@@ -28,17 +30,26 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeHighlightEngine, ide_highlight_engine, IDE, HIGHLIGHT_ENGINE, IdeObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeHighlightEngine *ide_highlight_engine_new             (IdeBuffer          *buffer);
+IDE_AVAILABLE_IN_ALL
 IdeBuffer          *ide_highlight_engine_get_buffer      (IdeHighlightEngine *self);
+IDE_AVAILABLE_IN_ALL
 IdeHighlighter     *ide_highlight_engine_get_highlighter (IdeHighlightEngine *self);
+IDE_AVAILABLE_IN_ALL
 void                ide_highlight_engine_rebuild         (IdeHighlightEngine *self);
+IDE_AVAILABLE_IN_ALL
 void                ide_highlight_engine_clear           (IdeHighlightEngine *self);
+IDE_AVAILABLE_IN_ALL
 void                ide_highlight_engine_invalidate      (IdeHighlightEngine *self,
                                                           const GtkTextIter  *begin,
                                                           const GtkTextIter  *end);
+IDE_AVAILABLE_IN_ALL
 GtkTextTag         *ide_highlight_engine_get_style       (IdeHighlightEngine *self,
                                                           const gchar        *style_name);
+IDE_AVAILABLE_IN_ALL
 void                ide_highlight_engine_pause           (IdeHighlightEngine *self);
+IDE_AVAILABLE_IN_ALL
 void                ide_highlight_engine_unpause         (IdeHighlightEngine *self);
 
 G_END_DECLS
diff --git a/src/libide/highlighting/ide-highlight-index.h b/src/libide/highlighting/ide-highlight-index.h
index 757878f..b25a7cf 100644
--- a/src/libide/highlighting/ide-highlight-index.h
+++ b/src/libide/highlighting/ide-highlight-index.h
@@ -20,21 +20,30 @@
 
 #include <glib-object.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_HIGHLIGHT_INDEX (ide_highlight_index_get_type())
 
 typedef struct _IdeHighlightIndex IdeHighlightIndex;
 
+IDE_AVAILABLE_IN_ALL
 GType              ide_highlight_index_get_type (void);
+IDE_AVAILABLE_IN_ALL
 IdeHighlightIndex *ide_highlight_index_new      (void);
+IDE_AVAILABLE_IN_ALL
 IdeHighlightIndex *ide_highlight_index_ref      (IdeHighlightIndex *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_highlight_index_unref    (IdeHighlightIndex *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_highlight_index_insert   (IdeHighlightIndex *self,
                                                  const gchar       *word,
                                                  gpointer           tag);
+IDE_AVAILABLE_IN_ALL
 gpointer           ide_highlight_index_lookup   (IdeHighlightIndex *self,
                                                  const gchar       *word);
+IDE_AVAILABLE_IN_ALL
 void               ide_highlight_index_dump     (IdeHighlightIndex *self);
 
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (IdeHighlightIndex, ide_highlight_index_unref)
diff --git a/src/libide/highlighting/ide-highlighter.h b/src/libide/highlighting/ide-highlighter.h
index b198ab9..9db00ad 100644
--- a/src/libide/highlighting/ide-highlighter.h
+++ b/src/libide/highlighting/ide-highlighter.h
@@ -20,6 +20,8 @@
 
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 #include "ide-types.h"
 
@@ -71,7 +73,9 @@ struct _IdeHighlighterInterface
   void (*load)       (IdeHighlighter       *self);
 };
 
+IDE_AVAILABLE_IN_ALL
 void ide_highlighter_load                    (IdeHighlighter       *self);
+IDE_AVAILABLE_IN_ALL
 void ide_highlighter_update                  (IdeHighlighter       *self,
                                               IdeHighlightCallback  callback,
                                               const GtkTextIter    *range_begin,
diff --git a/src/libide/ide-context.h b/src/libide/ide-context.h
index 5b5161e..65e014e 100644
--- a/src/libide/ide-context.h
+++ b/src/libide/ide-context.h
@@ -21,6 +21,8 @@
 #include <gio/gio.h>
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 
 G_BEGIN_DECLS
@@ -29,60 +31,94 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeContext, ide_context, IDE, CONTEXT, GObject)
 
+IDE_AVAILABLE_IN_ALL
 GFile                    *ide_context_get_project_file          (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 IdeBufferManager         *ide_context_get_buffer_manager        (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 IdeBuildManager          *ide_context_get_build_manager         (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 IdeBuildSystem           *ide_context_get_build_system          (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 IdeConfigurationManager  *ide_context_get_configuration_manager (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 IdeDebugManager          *ide_context_get_debug_manager         (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 IdeDiagnosticsManager    *ide_context_get_diagnostics_manager   (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 IdeDeviceManager         *ide_context_get_device_manager        (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 IdeDocumentation         *ide_context_get_documentation         (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 IdeProject               *ide_context_get_project               (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 GtkRecentManager         *ide_context_get_recent_manager        (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 IdeRunManager            *ide_context_get_run_manager           (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 IdeRuntimeManager        *ide_context_get_runtime_manager       (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 IdeSearchEngine          *ide_context_get_search_engine         (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 IdeSettings              *ide_context_get_settings              (IdeContext           *self,
                                                                  const gchar          *schema_id,
                                                                  const gchar          *relative_path);
+IDE_AVAILABLE_IN_ALL
 IdeSourceSnippetsManager *ide_context_get_snippets_manager      (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 IdeTestManager           *ide_context_get_test_manager          (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 IdeUnsavedFiles          *ide_context_get_unsaved_files         (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 IdeVcs                   *ide_context_get_vcs                   (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 const gchar              *ide_context_get_root_build_dir        (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 gpointer                  ide_context_get_service_typed         (IdeContext           *self,
                                                                  GType                 service_type);
+IDE_AVAILABLE_IN_ALL
 void                      ide_context_unload_async              (IdeContext           *self,
                                                                  GCancellable         *cancellable,
                                                                  GAsyncReadyCallback   callback,
                                                                  gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean                  ide_context_unload_finish             (IdeContext           *self,
                                                                  GAsyncResult         *result,
                                                                  GError              **error);
+IDE_AVAILABLE_IN_ALL
 void                      ide_context_new_async                 (GFile                *project_file,
                                                                  GCancellable         *cancellable,
                                                                  GAsyncReadyCallback   callback,
                                                                  gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 IdeContext               *ide_context_new_finish                (GAsyncResult         *result,
                                                                  GError              **error);
+IDE_AVAILABLE_IN_ALL
 void                      ide_context_set_root_build_dir        (IdeContext           *self,
                                                                  const gchar          *root_build_dir);
+IDE_AVAILABLE_IN_ALL
 void                      ide_context_restore_async             (IdeContext           *self,
                                                                  GCancellable         *cancellable,
                                                                  GAsyncReadyCallback   callback,
                                                                  gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean                  ide_context_restore_finish            (IdeContext           *self,
                                                                  GAsyncResult         *result,
                                                                  GError              **error);
+IDE_AVAILABLE_IN_ALL
 void                      ide_context_add_pausable              (IdeContext           *self,
                                                                  IdePausable          *pausable);
+IDE_AVAILABLE_IN_ALL
 void                      ide_context_remove_pausable           (IdeContext           *self,
                                                                  IdePausable          *pausable);
+IDE_AVAILABLE_IN_ALL
 void                      ide_context_hold                      (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 void                      ide_context_hold_for_object           (IdeContext           *self,
                                                                  gpointer              instance);
+IDE_AVAILABLE_IN_ALL
 void                      ide_context_release                   (IdeContext           *self);
+IDE_AVAILABLE_IN_ALL
 void                      ide_context_warning                   (IdeContext           *self,
                                                                  const gchar          *format,
                                                                  ...) G_GNUC_PRINTF (2, 3);
diff --git a/src/libide/ide-object.h b/src/libide/ide-object.h
index 1c63349..bdde72c 100644
--- a/src/libide/ide-object.h
+++ b/src/libide/ide-object.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 
 G_BEGIN_DECLS
@@ -38,9 +40,12 @@ struct _IdeObjectClass
                               IdeContext *context);
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeContext *ide_object_get_context             (IdeObject            *self);
+IDE_AVAILABLE_IN_ALL
 void        ide_object_set_context             (IdeObject            *self,
                                                 IdeContext           *context);
+IDE_AVAILABLE_IN_ALL
 void        ide_object_new_for_extension_async (GType                 interface_gtype,
                                                 GCompareDataFunc      sort_priority_func,
                                                 gpointer              sort_priority_data,
@@ -50,6 +55,7 @@ void        ide_object_new_for_extension_async (GType                 interface_
                                                 gpointer              user_data,
                                                 const gchar          *first_property,
                                                 ...);
+IDE_AVAILABLE_IN_ALL
 void        ide_object_new_async               (const gchar          *extension_point,
                                                 int                   io_priority,
                                                 GCancellable         *cancellable,
@@ -57,10 +63,14 @@ void        ide_object_new_async               (const gchar          *extension_
                                                 gpointer              user_data,
                                                 const gchar          *first_property,
                                                 ...);
+IDE_AVAILABLE_IN_ALL
 IdeObject  *ide_object_new_finish              (GAsyncResult         *result,
                                                 GError              **error);
+IDE_AVAILABLE_IN_ALL
 gboolean    ide_object_hold                    (IdeObject            *self);
+IDE_AVAILABLE_IN_ALL
 void        ide_object_release                 (IdeObject            *self);
+IDE_AVAILABLE_IN_ALL
 void        ide_object_notify_in_main          (gpointer              instance,
                                                 GParamSpec           *pspec);
 
diff --git a/src/libide/ide-pausable.h b/src/libide/ide-pausable.h
index 3aa1de0..5bbad8e 100644
--- a/src/libide/ide-pausable.h
+++ b/src/libide/ide-pausable.h
@@ -20,22 +20,33 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_PAUSABLE (ide_pausable_get_type())
 
 G_DECLARE_FINAL_TYPE (IdePausable, ide_pausable, IDE, PAUSABLE, GObject)
 
+IDE_AVAILABLE_IN_ALL
 IdePausable *ide_pausable_new          (void);
+IDE_AVAILABLE_IN_ALL
 gboolean     ide_pausable_get_paused   (IdePausable *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_pausable_set_paused   (IdePausable *self,
                                         gboolean     paused);
+IDE_AVAILABLE_IN_ALL
 void         ide_pausable_pause        (IdePausable *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_pausable_unpause      (IdePausable *self);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_pausable_get_title    (IdePausable *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_pausable_set_title    (IdePausable *self,
                                         const gchar *title);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_pausable_get_subtitle (IdePausable *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_pausable_set_subtitle (IdePausable *self,
                                         const gchar *subtitle);
 
diff --git a/src/libide/ide-service.h b/src/libide/ide-service.h
index 06226fd..c6bd64a 100644
--- a/src/libide/ide-service.h
+++ b/src/libide/ide-service.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 G_BEGIN_DECLS
@@ -51,8 +53,11 @@ struct _IdeServiceInterface
   void         (*stop)           (IdeService *self);
 };
 
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_service_get_name             (IdeService *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_service_start                (IdeService *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_service_stop                 (IdeService *self);
 void         _ide_service_emit_context_loaded (IdeService *self) G_GNUC_INTERNAL;
 
diff --git a/src/libide/langserv/ide-langserv-client.h b/src/libide/langserv/ide-langserv-client.h
index af70b31..03732d6 100644
--- a/src/libide/langserv/ide-langserv-client.h
+++ b/src/libide/langserv/ide-langserv-client.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 G_BEGIN_DECLS
@@ -50,36 +52,46 @@ struct _IdeLangservClientClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeLangservClient *ide_langserv_client_new                      (IdeContext           *context,
                                                                  GIOStream            *io_stream);
+IDE_AVAILABLE_IN_ALL
 void               ide_langserv_client_add_language             (IdeLangservClient    *self,
                                                                  const gchar          *language_id);
+IDE_AVAILABLE_IN_ALL
 void               ide_langserv_client_start                    (IdeLangservClient    *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_langserv_client_stop                     (IdeLangservClient    *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_langserv_client_call_async               (IdeLangservClient    *self,
                                                                  const gchar          *method,
                                                                  GVariant             *params,
                                                                  GCancellable         *cancellable,
                                                                  GAsyncReadyCallback   callback,
                                                                  gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_langserv_client_call_finish              (IdeLangservClient    *self,
                                                                  GAsyncResult         *result,
                                                                  GVariant            **return_value,
                                                                  GError              **error);
+IDE_AVAILABLE_IN_ALL
 void               ide_langserv_client_send_notification_async  (IdeLangservClient    *self,
                                                                  const gchar          *method,
                                                                  GVariant             *params,
                                                                  GCancellable         *cancellable,
                                                                  GAsyncReadyCallback   notificationback,
                                                                  gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_langserv_client_send_notification_finish (IdeLangservClient    *self,
                                                                  GAsyncResult         *result,
                                                                  GError              **error);
+IDE_AVAILABLE_IN_ALL
 void               ide_langserv_client_get_diagnostics_async    (IdeLangservClient    *self,
                                                                  GFile                *file,
                                                                  GCancellable         *cancellable,
                                                                  GAsyncReadyCallback   callback,
                                                                  gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_langserv_client_get_diagnostics_finish   (IdeLangservClient    *self,
                                                                  GAsyncResult         *result,
                                                                  IdeDiagnostics      **diagnostics,
diff --git a/src/libide/langserv/ide-langserv-completion-provider.h 
b/src/libide/langserv/ide-langserv-completion-provider.h
index b5da13c..664cd3d 100644
--- a/src/libide/langserv/ide-langserv-completion-provider.h
+++ b/src/libide/langserv/ide-langserv-completion-provider.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 #include "langserv/ide-langserv-client.h"
@@ -46,7 +48,9 @@ struct _IdeLangservCompletionProviderClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeLangservClient *ide_langserv_completion_provider_get_client (IdeLangservCompletionProvider *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_langserv_completion_provider_set_client (IdeLangservCompletionProvider *self,
                                                                 IdeLangservClient             *client);
 
diff --git a/src/libide/langserv/ide-langserv-diagnostic-provider.h 
b/src/libide/langserv/ide-langserv-diagnostic-provider.h
index 860a523..cd7b831 100644
--- a/src/libide/langserv/ide-langserv-diagnostic-provider.h
+++ b/src/libide/langserv/ide-langserv-diagnostic-provider.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 #include "diagnostics/ide-diagnostic-provider.h"
@@ -40,7 +42,9 @@ struct _IdeLangservDiagnosticProviderClass
   gpointer _reserved4;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeLangservClient *ide_langserv_diagnostic_provider_get_client (IdeLangservDiagnosticProvider *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_langserv_diagnostic_provider_set_client (IdeLangservDiagnosticProvider *self,
                                                                 IdeLangservClient             *client);
 
diff --git a/src/libide/langserv/ide-langserv-rename-provider.h 
b/src/libide/langserv/ide-langserv-rename-provider.h
index c1f9656..a39b340 100644
--- a/src/libide/langserv/ide-langserv-rename-provider.h
+++ b/src/libide/langserv/ide-langserv-rename-provider.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "langserv/ide-langserv-client.h"
 #include "rename/ide-rename-provider.h"
 
@@ -42,7 +44,9 @@ struct _IdeLangservRenameProviderClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeLangservClient *ide_langserv_rename_provider_get_client (IdeLangservRenameProvider *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_langserv_rename_provider_set_client (IdeLangservRenameProvider *self,
                                                             IdeLangservClient         *client);
 
diff --git a/src/libide/langserv/ide-langserv-symbol-resolver.h 
b/src/libide/langserv/ide-langserv-symbol-resolver.h
index c050360..f23641f 100644
--- a/src/libide/langserv/ide-langserv-symbol-resolver.h
+++ b/src/libide/langserv/ide-langserv-symbol-resolver.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 #include "langserv/ide-langserv-client.h"
@@ -44,7 +46,9 @@ struct _IdeLangservSymbolResolverClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeLangservClient *ide_langserv_symbol_resolver_get_client (IdeLangservSymbolResolver *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_langserv_symbol_resolver_set_client (IdeLangservSymbolResolver *self,
                                                             IdeLangservClient         *client);
 
diff --git a/src/libide/langserv/ide-langserv-util.h b/src/libide/langserv/ide-langserv-util.h
index 76e13f9..60715f5 100644
--- a/src/libide/langserv/ide-langserv-util.h
+++ b/src/libide/langserv/ide-langserv-util.h
@@ -18,11 +18,15 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "symbols/ide-symbol.h"
 
 G_BEGIN_DECLS
 
+IDE_AVAILABLE_IN_ALL
 IdeSymbolKind ide_langserv_decode_symbol_kind     (guint kind);
+IDE_AVAILABLE_IN_ALL
 IdeSymbolKind ide_langserv_decode_completion_kind (guint kind);
 
 G_END_DECLS
diff --git a/src/libide/layout/ide-layout-grid-column.h b/src/libide/layout/ide-layout-grid-column.h
index ab10ed1..e857006 100644
--- a/src/libide/layout/ide-layout-grid-column.h
+++ b/src/libide/layout/ide-layout-grid-column.h
@@ -20,6 +20,8 @@
 
 #include <dazzle.h>
 
+#include "ide-version-macros.h"
+
 #include "layout/ide-layout-stack.h"
 
 G_BEGIN_DECLS
@@ -28,8 +30,11 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeLayoutGridColumn, ide_layout_grid_column, IDE, LAYOUT_GRID_COLUMN, DzlMultiPaned)
 
+IDE_AVAILABLE_IN_ALL
 GtkWidget      *ide_layout_grid_column_new               (void);
+IDE_AVAILABLE_IN_ALL
 IdeLayoutStack *ide_layout_grid_column_get_current_stack (IdeLayoutGridColumn *self);
+IDE_AVAILABLE_IN_ALL
 void            ide_layout_grid_column_set_current_stack (IdeLayoutGridColumn *self,
                                                           IdeLayoutStack      *stack);
 
diff --git a/src/libide/layout/ide-layout-grid.h b/src/libide/layout/ide-layout-grid.h
index 68f8e00..1ca4b71 100644
--- a/src/libide/layout/ide-layout-grid.h
+++ b/src/libide/layout/ide-layout-grid.h
@@ -20,6 +20,8 @@
 
 #include <dazzle.h>
 
+#include "ide-version-macros.h"
+
 #include "layout/ide-layout-grid-column.h"
 #include "layout/ide-layout-stack.h"
 #include "layout/ide-layout-view.h"
@@ -47,17 +49,26 @@ struct _IdeLayoutGridClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 GtkWidget           *ide_layout_grid_new                (void);
+IDE_AVAILABLE_IN_ALL
 IdeLayoutGridColumn *ide_layout_grid_get_nth_column     (IdeLayoutGrid       *self,
                                                          gint                 nth);
+IDE_AVAILABLE_IN_ALL
 IdeLayoutView       *ide_layout_grid_focus_neighbor     (IdeLayoutGrid       *self,
                                                          GtkDirectionType     dir);
+IDE_AVAILABLE_IN_ALL
 IdeLayoutGridColumn *ide_layout_grid_get_current_column (IdeLayoutGrid       *self);
+IDE_AVAILABLE_IN_ALL
 void                 ide_layout_grid_set_current_column (IdeLayoutGrid       *self,
                                                          IdeLayoutGridColumn *column);
+IDE_AVAILABLE_IN_ALL
 IdeLayoutStack      *ide_layout_grid_get_current_stack  (IdeLayoutGrid       *self);
+IDE_AVAILABLE_IN_ALL
 IdeLayoutView       *ide_layout_grid_get_current_view   (IdeLayoutGrid       *self);
+IDE_AVAILABLE_IN_ALL
 guint                ide_layout_grid_count_views        (IdeLayoutGrid       *self);
+IDE_AVAILABLE_IN_ALL
 void                 ide_layout_grid_foreach_view       (IdeLayoutGrid       *self,
                                                          GtkCallback          callback,
                                                          gpointer             user_data);
diff --git a/src/libide/layout/ide-layout-pane.h b/src/libide/layout/ide-layout-pane.h
index c9c1cb0..25013be 100644
--- a/src/libide/layout/ide-layout-pane.h
+++ b/src/libide/layout/ide-layout-pane.h
@@ -20,6 +20,8 @@
 
 #include <dazzle.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_LAYOUT_PANE (ide_layout_pane_get_type())
diff --git a/src/libide/layout/ide-layout-stack-addin.h b/src/libide/layout/ide-layout-stack-addin.h
index a77afc3..1f7424a 100644
--- a/src/libide/layout/ide-layout-stack-addin.h
+++ b/src/libide/layout/ide-layout-stack-addin.h
@@ -20,6 +20,8 @@
 
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 #include "layout/ide-layout-stack.h"
 #include "layout/ide-layout-view.h"
 
@@ -41,12 +43,16 @@ struct _IdeLayoutStackAddinInterface
                     IdeLayoutView       *view);
 };
 
+IDE_AVAILABLE_IN_ALL
 void                 ide_layout_stack_addin_load                (IdeLayoutStackAddin *self,
                                                                  IdeLayoutStack      *stack);
+IDE_AVAILABLE_IN_ALL
 void                 ide_layout_stack_addin_unload              (IdeLayoutStackAddin *self,
                                                                  IdeLayoutStack      *stack);
+IDE_AVAILABLE_IN_ALL
 void                 ide_layout_stack_addin_set_view            (IdeLayoutStackAddin *self,
                                                                  IdeLayoutView       *view);
+IDE_AVAILABLE_IN_ALL
 IdeLayoutStackAddin *ide_layout_stack_addin_find_by_module_name (IdeLayoutStack      *stack,
                                                                  const gchar         *module_name);
 
diff --git a/src/libide/layout/ide-layout-stack-header.h b/src/libide/layout/ide-layout-stack-header.h
index 501a55b..9e07071 100644
--- a/src/libide/layout/ide-layout-stack-header.h
+++ b/src/libide/layout/ide-layout-stack-header.h
@@ -20,13 +20,17 @@
 
 #include <dazzle.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_LAYOUT_STACK_HEADER (ide_layout_stack_header_get_type())
 
 G_DECLARE_FINAL_TYPE (IdeLayoutStackHeader, ide_layout_stack_header, IDE, LAYOUT_STACK_HEADER, 
DzlPriorityBox)
 
+IDE_AVAILABLE_IN_ALL
 GtkWidget *ide_layout_stack_header_new              (void);
+IDE_AVAILABLE_IN_ALL
 void       ide_layout_stack_header_add_custom_title (IdeLayoutStackHeader *self,
                                                      GtkWidget            *widget,
                                                      gint                  priority);
diff --git a/src/libide/layout/ide-layout-stack.h b/src/libide/layout/ide-layout-stack.h
index 86bc5d9..91a502e 100644
--- a/src/libide/layout/ide-layout-stack.h
+++ b/src/libide/layout/ide-layout-stack.h
@@ -20,6 +20,8 @@
 
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 #include "layout/ide-layout-view.h"
 
 G_BEGIN_DECLS
@@ -51,19 +53,27 @@ struct _IdeLayoutStackClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 GtkWidget     *ide_layout_stack_new                   (void);
+IDE_AVAILABLE_IN_ALL
 GtkWidget     *ide_layout_stack_get_titlebar          (IdeLayoutStack       *self);
+IDE_AVAILABLE_IN_ALL
 IdeLayoutView *ide_layout_stack_get_visible_child     (IdeLayoutStack       *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_layout_stack_set_visible_child     (IdeLayoutStack       *self,
                                                        IdeLayoutView        *view);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_layout_stack_get_has_view          (IdeLayoutStack       *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_layout_stack_agree_to_close_async  (IdeLayoutStack       *self,
                                                        GCancellable         *cancellable,
                                                        GAsyncReadyCallback   callback,
                                                        gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_layout_stack_agree_to_close_finish (IdeLayoutStack       *self,
                                                        GAsyncResult         *result,
                                                        GError              **error);
+IDE_AVAILABLE_IN_ALL
 void           ide_layout_stack_foreach_view          (IdeLayoutStack       *self,
                                                        GtkCallback           callback,
                                                        gpointer              user_data);
diff --git a/src/libide/layout/ide-layout-transient-sidebar.h 
b/src/libide/layout/ide-layout-transient-sidebar.h
index dde8cd0..1c2a31a 100644
--- a/src/libide/layout/ide-layout-transient-sidebar.h
+++ b/src/libide/layout/ide-layout-transient-sidebar.h
@@ -20,6 +20,8 @@
 
 #include <dazzle.h>
 
+#include "ide-version-macros.h"
+
 #include "layout/ide-layout-pane.h"
 #include "layout/ide-layout-view.h"
 
@@ -44,8 +46,10 @@ struct _IdeLayoutTransientSidebarClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 void ide_layout_transient_sidebar_set_panel (IdeLayoutTransientSidebar *self,
                                              GtkWidget                 *panel);
+IDE_AVAILABLE_IN_ALL
 void ide_layout_transient_sidebar_set_view  (IdeLayoutTransientSidebar *self,
                                              IdeLayoutView             *view);
 
diff --git a/src/libide/layout/ide-layout-view.h b/src/libide/layout/ide-layout-view.h
index 6eddaed..0b94465 100644
--- a/src/libide/layout/ide-layout-view.h
+++ b/src/libide/layout/ide-layout-view.h
@@ -20,6 +20,8 @@
 
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_LAYOUT_VIEW (ide_layout_view_get_type())
@@ -54,39 +56,60 @@ struct _IdeLayoutViewClass
   gpointer _reserved12;
 };
 
+IDE_AVAILABLE_IN_ALL
 GtkWidget     *ide_layout_view_new                   (void);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_layout_view_get_can_split         (IdeLayoutView        *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_layout_view_set_can_split         (IdeLayoutView        *self,
                                                       gboolean              can_split);
+IDE_AVAILABLE_IN_ALL
 IdeLayoutView *ide_layout_view_create_split_view     (IdeLayoutView        *self);
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_layout_view_get_icon_name         (IdeLayoutView        *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_layout_view_set_icon_name         (IdeLayoutView        *self,
                                                       const gchar          *icon_name);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_layout_view_get_failed            (IdeLayoutView        *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_layout_view_set_failed            (IdeLayoutView        *self,
                                                       gboolean              failed);
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_layout_view_get_menu_id           (IdeLayoutView        *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_layout_view_set_menu_id           (IdeLayoutView        *self,
                                                       const gchar          *menu_id);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_layout_view_get_modified          (IdeLayoutView        *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_layout_view_set_modified          (IdeLayoutView        *self,
                                                       gboolean              modified);
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_layout_view_get_title             (IdeLayoutView        *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_layout_view_set_title             (IdeLayoutView        *self,
                                                       const gchar          *title);
+IDE_AVAILABLE_IN_ALL
 const GdkRGBA *ide_layout_view_get_primary_color_bg  (IdeLayoutView        *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_layout_view_set_primary_color_bg  (IdeLayoutView        *self,
                                                       const GdkRGBA        *primary_color_bg);
+IDE_AVAILABLE_IN_ALL
 const GdkRGBA *ide_layout_view_get_primary_color_fg  (IdeLayoutView        *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_layout_view_set_primary_color_fg  (IdeLayoutView        *self,
                                                       const GdkRGBA        *primary_color_fg);
+IDE_AVAILABLE_IN_ALL
 void           ide_layout_view_agree_to_close_async  (IdeLayoutView        *self,
                                                       GCancellable         *cancellable,
                                                       GAsyncReadyCallback   callback,
                                                       gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_layout_view_agree_to_close_finish (IdeLayoutView        *self,
                                                       GAsyncResult         *result,
                                                       GError              **error);
+IDE_AVAILABLE_IN_ALL
 void           ide_layout_view_report_error          (IdeLayoutView        *self,
                                                       const gchar          *format,
                                                       ...) G_GNUC_PRINTF (2, 3);
diff --git a/src/libide/layout/ide-layout.h b/src/libide/layout/ide-layout.h
index 8cdb44f..caf2453 100644
--- a/src/libide/layout/ide-layout.h
+++ b/src/libide/layout/ide-layout.h
@@ -20,6 +20,8 @@
 
 #include <dazzle.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_LAYOUT (ide_layout_get_type())
diff --git a/src/libide/local/ide-local-device.h b/src/libide/local/ide-local-device.h
index 557a143..b743b20 100644
--- a/src/libide/local/ide-local-device.h
+++ b/src/libide/local/ide-local-device.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "devices/ide-device.h"
 
 G_BEGIN_DECLS
diff --git a/src/libide/logging/ide-log.h b/src/libide/logging/ide-log.h
index 5e26a77..74edde4 100644
--- a/src/libide/logging/ide-log.h
+++ b/src/libide/logging/ide-log.h
@@ -20,13 +20,20 @@
 
 #include <glib.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
+IDE_AVAILABLE_IN_ALL
 void ide_log_init               (gboolean     stdout_,
                                  const gchar *filename);
+IDE_AVAILABLE_IN_ALL
 void ide_log_increase_verbosity (void);
+IDE_AVAILABLE_IN_ALL
 gint ide_log_get_verbosity      (void);
+IDE_AVAILABLE_IN_ALL
 void ide_log_set_verbosity      (gint         level);
+IDE_AVAILABLE_IN_ALL
 void ide_log_shutdown           (void);
 
 G_END_DECLS
diff --git a/src/libide/preferences/ide-preferences-addin.h b/src/libide/preferences/ide-preferences-addin.h
index de8d00f..cde22de 100644
--- a/src/libide/preferences/ide-preferences-addin.h
+++ b/src/libide/preferences/ide-preferences-addin.h
@@ -21,6 +21,8 @@
 #include <dazzle.h>
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_PREFERENCES_ADDIN (ide_preferences_addin_get_type())
@@ -37,8 +39,10 @@ struct _IdePreferencesAddinInterface
                   DzlPreferences      *preferences);
 };
 
+IDE_AVAILABLE_IN_ALL
 void ide_preferences_addin_load   (IdePreferencesAddin *self,
                                    DzlPreferences      *preferences);
+IDE_AVAILABLE_IN_ALL
 void ide_preferences_addin_unload (IdePreferencesAddin *self,
                                    DzlPreferences      *preferences);
 
diff --git a/src/libide/preferences/ide-preferences-perspective.h 
b/src/libide/preferences/ide-preferences-perspective.h
index 0cd3850..91eb042 100644
--- a/src/libide/preferences/ide-preferences-perspective.h
+++ b/src/libide/preferences/ide-preferences-perspective.h
@@ -20,6 +20,8 @@
 
 #include <dazzle.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_PREFERENCES_PERSPECTIVE     (ide_preferences_perspective_get_type())
diff --git a/src/libide/preferences/ide-preferences-window.h b/src/libide/preferences/ide-preferences-window.h
index 3083f0d..5db1c39 100644
--- a/src/libide/preferences/ide-preferences-window.h
+++ b/src/libide/preferences/ide-preferences-window.h
@@ -20,6 +20,8 @@
 
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_PREFERENCES_WINDOW (ide_preferences_window_get_type())
diff --git a/src/libide/projects/ide-project-edit.h b/src/libide/projects/ide-project-edit.h
index acdc14e..767cc7f 100644
--- a/src/libide/projects/ide-project-edit.h
+++ b/src/libide/projects/ide-project-edit.h
@@ -20,6 +20,8 @@
 
 #include <glib-object.h>
 
+#include "ide-version-macros.h"
+
 #include "diagnostics/ide-source-range.h"
 
 G_BEGIN_DECLS
@@ -39,11 +41,16 @@ struct _IdeProjectEditClass
   gpointer _reserved4;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeProjectEdit *ide_project_edit_new             (void);
+IDE_AVAILABLE_IN_ALL
 IdeSourceRange *ide_project_edit_get_range       (IdeProjectEdit *self);
+IDE_AVAILABLE_IN_ALL
 void            ide_project_edit_set_range       (IdeProjectEdit *self,
                                                   IdeSourceRange *range);
+IDE_AVAILABLE_IN_ALL
 const gchar    *ide_project_edit_get_replacement (IdeProjectEdit *self);
+IDE_AVAILABLE_IN_ALL
 void            ide_project_edit_set_replacement (IdeProjectEdit *self,
                                                   const gchar    *replacement);
 
diff --git a/src/libide/projects/ide-project-file.h b/src/libide/projects/ide-project-file.h
index 80efd42..d8508d3 100644
--- a/src/libide/projects/ide-project-file.h
+++ b/src/libide/projects/ide-project-file.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "files/ide-file.h"
 #include "projects/ide-project-item.h"
 
@@ -34,10 +36,15 @@ struct _IdeProjectFileClass
   IdeProjectItemClass parent;
 };
 
+IDE_AVAILABLE_IN_ALL
 GFile       *ide_project_file_get_file         (IdeProjectFile *self);
+IDE_AVAILABLE_IN_ALL
 GFileInfo   *ide_project_file_get_file_info    (IdeProjectFile *self);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_project_file_get_name         (IdeProjectFile *self);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_project_file_get_path         (IdeProjectFile *self);
+IDE_AVAILABLE_IN_ALL
 gboolean     ide_project_file_get_is_directory (IdeProjectFile *self);
 
 G_END_DECLS
diff --git a/src/libide/projects/ide-project-files.h b/src/libide/projects/ide-project-files.h
index d14690c..d0550a6 100644
--- a/src/libide/projects/ide-project-files.h
+++ b/src/libide/projects/ide-project-files.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "projects/ide-project-file.h"
 #include "projects/ide-project-item.h"
 
@@ -33,10 +35,13 @@ struct _IdeProjectFiles
   IdeProjectItem parent_instance;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeFile        *ide_project_files_get_file_for_path (IdeProjectFiles *self,
                                                      const gchar     *path);
+IDE_AVAILABLE_IN_ALL
 void            ide_project_files_add_file          (IdeProjectFiles *self,
                                                      IdeProjectFile  *file);
+IDE_AVAILABLE_IN_ALL
 IdeProjectItem *ide_project_files_find_file         (IdeProjectFiles *self,
                                                      GFile           *file);
 
diff --git a/src/libide/projects/ide-project-item.h b/src/libide/projects/ide-project-item.h
index eab0614..055b80e 100644
--- a/src/libide/projects/ide-project-item.h
+++ b/src/libide/projects/ide-project-item.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 G_BEGIN_DECLS
@@ -31,11 +33,15 @@ struct _IdeProjectItemClass
   IdeObjectClass parent_class;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeProjectItem *ide_project_item_get_parent   (IdeProjectItem *item);
+IDE_AVAILABLE_IN_ALL
 void            ide_project_item_append       (IdeProjectItem *item,
                                                IdeProjectItem *child);
+IDE_AVAILABLE_IN_ALL
 void            ide_project_item_remove       (IdeProjectItem *item,
                                                IdeProjectItem *child);
+IDE_AVAILABLE_IN_ALL
 GSequence      *ide_project_item_get_children (IdeProjectItem *item);
 
 G_END_DECLS
diff --git a/src/libide/projects/ide-project-miner.h b/src/libide/projects/ide-project-miner.h
index ca8c56a..53d40f8 100644
--- a/src/libide/projects/ide-project-miner.h
+++ b/src/libide/projects/ide-project-miner.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "projects/ide-project-info.h"
 
 G_BEGIN_DECLS
@@ -43,12 +45,15 @@ struct _IdeProjectMinerInterface
                            GError              **error);
 };
 
+IDE_AVAILABLE_IN_ALL
 void     ide_project_miner_emit_discovered (IdeProjectMiner      *self,
                                             IdeProjectInfo       *project_info);
+IDE_AVAILABLE_IN_ALL
 void     ide_project_miner_mine_async      (IdeProjectMiner      *self,
                                             GCancellable         *cancellable,
                                             GAsyncReadyCallback   callback,
                                             gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean ide_project_miner_mine_finish     (IdeProjectMiner      *self,
                                             GAsyncResult         *result,
                                             GError              **error);
diff --git a/src/libide/projects/ide-project.h b/src/libide/projects/ide-project.h
index 12335ad..3590938 100644
--- a/src/libide/projects/ide-project.h
+++ b/src/libide/projects/ide-project.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 #include "projects/ide-project-files.h"
 
@@ -27,34 +29,49 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeProject, ide_project, IDE, PROJECT, IdeObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeProjectItem  *ide_project_get_root           (IdeProject           *self);
+IDE_AVAILABLE_IN_ALL
 const gchar     *ide_project_get_name           (IdeProject           *self);
+IDE_AVAILABLE_IN_ALL
 const gchar     *ide_project_get_id             (IdeProject           *self);
+IDE_AVAILABLE_IN_ALL
 IdeFile         *ide_project_get_file_for_path  (IdeProject           *self,
                                                  const gchar          *path);
+IDE_AVAILABLE_IN_ALL
 IdeFile         *ide_project_get_project_file   (IdeProject           *self,
                                                  GFile                *gfile);
+IDE_AVAILABLE_IN_ALL
 void             ide_project_reader_lock        (IdeProject           *self);
+IDE_AVAILABLE_IN_ALL
 void             ide_project_reader_unlock      (IdeProject           *self);
+IDE_AVAILABLE_IN_ALL
 void             ide_project_writer_lock        (IdeProject           *self);
+IDE_AVAILABLE_IN_ALL
 void             ide_project_writer_unlock      (IdeProject           *self);
+IDE_AVAILABLE_IN_ALL
 void             ide_project_add_file           (IdeProject           *self,
                                                  IdeProjectFile       *file);
+IDE_AVAILABLE_IN_ALL
 IdeProjectFiles *ide_project_get_files          (IdeProject           *self);
+IDE_AVAILABLE_IN_ALL
 void             ide_project_rename_file_async  (IdeProject           *self,
                                                  GFile                *orig_file,
                                                  GFile                *new_file,
                                                  GCancellable         *cancellable,
                                                  GAsyncReadyCallback   callback,
                                                  gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean         ide_project_rename_file_finish (IdeProject           *self,
                                                  GAsyncResult         *result,
                                                  GError              **error);
+IDE_AVAILABLE_IN_ALL
 void             ide_project_trash_file_async   (IdeProject           *self,
                                                  GFile                *file,
                                                  GCancellable         *cancellable,
                                                  GAsyncReadyCallback   callback,
                                                  gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean         ide_project_trash_file_finish  (IdeProject           *self,
                                                  GAsyncResult         *result,
                                                  GError              **error);
diff --git a/src/libide/projects/ide-recent-projects.h b/src/libide/projects/ide-recent-projects.h
index fe31948..23db21f 100644
--- a/src/libide/projects/ide-recent-projects.h
+++ b/src/libide/projects/ide-recent-projects.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "projects/ide-project-info.h"
 
 G_BEGIN_DECLS
@@ -31,16 +33,22 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeRecentProjects, ide_recent_projects, IDE, RECENT_PROJECTS, GObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeRecentProjects *ide_recent_projects_new              (void);
+IDE_AVAILABLE_IN_ALL
 GPtrArray         *ide_recent_projects_get_projects     (IdeRecentProjects    *self);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_recent_projects_get_busy         (IdeRecentProjects    *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_recent_projects_remove           (IdeRecentProjects    *self,
                                                          GList                *project_infos);
+IDE_AVAILABLE_IN_ALL
 void               ide_recent_projects_discover_async   (IdeRecentProjects    *self,
                                                          gboolean              recent_only,
                                                          GCancellable         *cancellable,
                                                          GAsyncReadyCallback   callback,
                                                          gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_recent_projects_discover_finish  (IdeRecentProjects    *self,
                                                          GAsyncResult         *result,
                                                          GError              **error);
diff --git a/src/libide/rename/ide-rename-provider.h b/src/libide/rename/ide-rename-provider.h
index 9f090f9..6567c50 100644
--- a/src/libide/rename/ide-rename-provider.h
+++ b/src/libide/rename/ide-rename-provider.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 #include "projects/ide-project-edit.h"
@@ -45,13 +47,16 @@ struct _IdeRenameProviderInterface
   void     (*load)          (IdeRenameProvider    *self);
 };
 
+IDE_AVAILABLE_IN_ALL
 void      ide_rename_provider_load          (IdeRenameProvider     *self);
+IDE_AVAILABLE_IN_ALL
 void      ide_rename_provider_rename_async  (IdeRenameProvider     *self,
                                              IdeSourceLocation     *location,
                                              const gchar           *new_name,
                                              GCancellable          *cancellable,
                                              GAsyncReadyCallback    callback,
                                              gpointer               user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean  ide_rename_provider_rename_finish (IdeRenameProvider     *self,
                                              GAsyncResult          *result,
                                              GPtrArray            **edits,
diff --git a/src/libide/runner/ide-run-manager.h b/src/libide/runner/ide-run-manager.h
index 029f765..1474137 100644
--- a/src/libide/runner/ide-run-manager.h
+++ b/src/libide/runner/ide-run-manager.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 #include "buildsystem/ide-build-target.h"
@@ -33,14 +35,21 @@ typedef void (*IdeRunHandler) (IdeRunManager *self,
                                IdeRunner     *runner,
                                gpointer       user_data);
 
+IDE_AVAILABLE_IN_ALL
 IdeBuildTarget *ide_run_manager_get_build_target               (IdeRunManager        *self);
+IDE_AVAILABLE_IN_ALL
 void            ide_run_manager_set_build_target               (IdeRunManager        *self,
                                                                 IdeBuildTarget       *build_target);
+IDE_AVAILABLE_IN_ALL
 void            ide_run_manager_cancel                         (IdeRunManager        *self);
+IDE_AVAILABLE_IN_ALL
 gboolean        ide_run_manager_get_busy                       (IdeRunManager        *self);
+IDE_AVAILABLE_IN_ALL
 const gchar    *ide_run_manager_get_handler                    (IdeRunManager        *self);
+IDE_AVAILABLE_IN_ALL
 void            ide_run_manager_set_handler                    (IdeRunManager        *self,
                                                                 const gchar          *id);
+IDE_AVAILABLE_IN_ALL
 void            ide_run_manager_add_handler                    (IdeRunManager        *self,
                                                                 const gchar          *id,
                                                                 const gchar          *title,
@@ -49,20 +58,25 @@ void            ide_run_manager_add_handler                    (IdeRunManager
                                                                 IdeRunHandler         run_handler,
                                                                 gpointer              user_data,
                                                                 GDestroyNotify        user_data_destroy);
+IDE_AVAILABLE_IN_ALL
 void            ide_run_manager_remove_handler                 (IdeRunManager        *self,
                                                                 const gchar          *id);
+IDE_AVAILABLE_IN_ALL
 void            ide_run_manager_run_async                      (IdeRunManager        *self,
                                                                 IdeBuildTarget       *build_target,
                                                                 GCancellable         *cancellable,
                                                                 GAsyncReadyCallback   callback,
                                                                 gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean        ide_run_manager_run_finish                     (IdeRunManager        *self,
                                                                 GAsyncResult         *result,
                                                                 GError              **error);
+IDE_AVAILABLE_IN_ALL
 void            ide_run_manager_discover_default_target_async  (IdeRunManager        *self,
                                                                 GCancellable         *cancellable,
                                                                 GAsyncReadyCallback   callback,
                                                                 gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 IdeBuildTarget *ide_run_manager_discover_default_target_finish (IdeRunManager        *self,
                                                                 GAsyncResult        *result,
                                                                 GError              **error);
diff --git a/src/libide/runner/ide-runner-addin.h b/src/libide/runner/ide-runner-addin.h
index a5630c1..5b97556 100644
--- a/src/libide/runner/ide-runner-addin.h
+++ b/src/libide/runner/ide-runner-addin.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 #include "runner/ide-runner.h"
 
@@ -53,21 +55,27 @@ struct _IdeRunnerAddinInterface
                                GError              **error);
 };
 
+IDE_AVAILABLE_IN_ALL
 void     ide_runner_addin_load            (IdeRunnerAddin       *self,
                                            IdeRunner            *runner);
+IDE_AVAILABLE_IN_ALL
 void     ide_runner_addin_unload          (IdeRunnerAddin       *self,
                                            IdeRunner            *runner);
+IDE_AVAILABLE_IN_ALL
 void     ide_runner_addin_prehook_async   (IdeRunnerAddin       *self,
                                            GCancellable         *cancellable,
                                            GAsyncReadyCallback   callback,
                                            gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean ide_runner_addin_prehook_finish  (IdeRunnerAddin       *self,
                                            GAsyncResult         *result,
                                            GError              **error);
+IDE_AVAILABLE_IN_ALL
 void     ide_runner_addin_posthook_async  (IdeRunnerAddin       *self,
                                            GCancellable         *cancellable,
                                            GAsyncReadyCallback   callback,
                                            gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean ide_runner_addin_posthook_finish (IdeRunnerAddin       *self,
                                            GAsyncResult         *result,
                                            GError              **error);
diff --git a/src/libide/runner/ide-runner.h b/src/libide/runner/ide-runner.h
index 5b0569e..d36f449 100644
--- a/src/libide/runner/ide-runner.h
+++ b/src/libide/runner/ide-runner.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 #include "buildsystem/ide-environment.h"
 
@@ -61,49 +63,76 @@ struct _IdeRunnerClass
   gpointer _reserved7;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeRunner         *ide_runner_new             (IdeContext           *context);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_runner_get_failed      (IdeRunner            *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_runner_set_failed      (IdeRunner            *self,
                                                gboolean              failed);
+IDE_AVAILABLE_IN_ALL
 IdeRuntime        *ide_runner_get_runtime     (IdeRunner            *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_runner_force_quit      (IdeRunner            *self);
+IDE_AVAILABLE_IN_ALL
 IdeEnvironment    *ide_runner_get_environment (IdeRunner            *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_runner_run_async       (IdeRunner            *self,
                                                GCancellable         *cancellable,
                                                GAsyncReadyCallback   callback,
                                                gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_runner_run_finish      (IdeRunner            *self,
                                                GAsyncResult         *result,
                                                GError              **error);
+IDE_AVAILABLE_IN_ALL
 GSubprocessFlags   ide_runner_get_flags       (IdeRunner            *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_runner_set_flags       (IdeRunner            *self,
                                                GSubprocessFlags      flags);
+IDE_AVAILABLE_IN_ALL
 const gchar       *ide_runner_get_cwd         (IdeRunner            *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_runner_set_cwd         (IdeRunner            *self,
                                                const gchar          *cwd);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_runner_get_clear_env   (IdeRunner            *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_runner_set_clear_env   (IdeRunner            *self,
                                                gboolean              clear_env);
+IDE_AVAILABLE_IN_ALL
 void               ide_runner_prepend_argv    (IdeRunner            *self,
                                                const gchar          *param);
+IDE_AVAILABLE_IN_ALL
 void               ide_runner_append_argv     (IdeRunner            *self,
                                                const gchar          *param);
+IDE_AVAILABLE_IN_ALL
 void               ide_runner_push_args       (IdeRunner            *self,
                                                const gchar * const  *args);
+IDE_AVAILABLE_IN_ALL
 gchar            **ide_runner_get_argv        (IdeRunner            *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_runner_set_argv        (IdeRunner            *self,
                                                const gchar * const  *argv);
+IDE_AVAILABLE_IN_ALL
 gint               ide_runner_take_fd         (IdeRunner            *self,
                                                gint                  source_fd,
                                                gint                  dest_fd);
+IDE_AVAILABLE_IN_ALL
 GOutputStream     *ide_runner_get_stdin       (IdeRunner            *self);
+IDE_AVAILABLE_IN_ALL
 GInputStream      *ide_runner_get_stdout      (IdeRunner            *self);
+IDE_AVAILABLE_IN_ALL
 GInputStream      *ide_runner_get_stderr      (IdeRunner            *self);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_runner_get_run_on_host (IdeRunner            *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_runner_set_run_on_host (IdeRunner            *self,
                                                gboolean              run_on_host);
+IDE_AVAILABLE_IN_ALL
 void               ide_runner_set_tty         (IdeRunner            *self,
                                                int                   tty_fd);
+IDE_AVAILABLE_IN_ALL
 gint               ide_runner_steal_tty       (IdeRunner            *self);
 
 G_END_DECLS
diff --git a/src/libide/runtimes/ide-runtime-manager.h b/src/libide/runtimes/ide-runtime-manager.h
index a20b595..fff3643 100644
--- a/src/libide/runtimes/ide-runtime-manager.h
+++ b/src/libide/runtimes/ide-runtime-manager.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 G_BEGIN_DECLS
@@ -27,17 +29,22 @@ G_BEGIN_DECLS
 G_DECLARE_FINAL_TYPE (IdeRuntimeManager, ide_runtime_manager, IDE, RUNTIME_MANAGER, IdeObject)
 
 void        _ide_runtime_manager_unload       (IdeRuntimeManager    *self) G_GNUC_INTERNAL;
+IDE_AVAILABLE_IN_ALL
 IdeRuntime *ide_runtime_manager_get_runtime   (IdeRuntimeManager    *self,
                                                const gchar          *id);
+IDE_AVAILABLE_IN_ALL
 void        ide_runtime_manager_add           (IdeRuntimeManager    *self,
                                                IdeRuntime           *runtime);
+IDE_AVAILABLE_IN_ALL
 void        ide_runtime_manager_remove        (IdeRuntimeManager    *self,
                                                IdeRuntime           *runtime);
+IDE_AVAILABLE_IN_ALL
 void        ide_runtime_manager_ensure_async  (IdeRuntimeManager    *self,
                                                const gchar          *runtime_id,
                                                GCancellable         *cancellable,
                                                GAsyncReadyCallback   callback,
                                                gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 IdeRuntime *ide_runtime_manager_ensure_finish (IdeRuntimeManager    *self,
                                                GAsyncResult         *result,
                                                GError              **error);
diff --git a/src/libide/runtimes/ide-runtime-provider.h b/src/libide/runtimes/ide-runtime-provider.h
index 381d3e9..12f4bd8 100644
--- a/src/libide/runtimes/ide-runtime-provider.h
+++ b/src/libide/runtimes/ide-runtime-provider.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 
 G_BEGIN_DECLS
@@ -48,17 +50,22 @@ struct _IdeRuntimeProviderInterface
                               GError              **error);
 };
 
+IDE_AVAILABLE_IN_ALL
 void     ide_runtime_provider_load           (IdeRuntimeProvider   *self,
                                               IdeRuntimeManager    *manager);
+IDE_AVAILABLE_IN_ALL
 void     ide_runtime_provider_unload         (IdeRuntimeProvider   *self,
                                               IdeRuntimeManager    *manager);
+IDE_AVAILABLE_IN_ALL
 gboolean ide_runtime_provider_can_install    (IdeRuntimeProvider   *self,
                                               const gchar          *runtime_id);
+IDE_AVAILABLE_IN_ALL
 void     ide_runtime_provider_install_async  (IdeRuntimeProvider   *self,
                                               const gchar          *runtime_id,
                                               GCancellable         *cancellable,
                                               GAsyncReadyCallback   callback,
                                               gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean ide_runtime_provider_install_finish (IdeRuntimeProvider   *self,
                                               GAsyncResult         *result,
                                               GError              **error);
diff --git a/src/libide/runtimes/ide-runtime.h b/src/libide/runtimes/ide-runtime.h
index 3962ad6..530d824 100644
--- a/src/libide/runtimes/ide-runtime.h
+++ b/src/libide/runtimes/ide-runtime.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 #include "buildsystem/ide-build-target.h"
@@ -69,25 +71,36 @@ struct _IdeRuntimeClass
   gpointer _reserved16;
 };
 
+IDE_AVAILABLE_IN_ALL
 GQuark                 ide_runtime_error_quark              (void) G_GNUC_CONST;
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_runtime_contains_program_in_path (IdeRuntime           *self,
                                                              const gchar          *program,
                                                              GCancellable         *cancellable);
+IDE_AVAILABLE_IN_ALL
 IdeSubprocessLauncher *ide_runtime_create_launcher          (IdeRuntime           *self,
                                                              GError              **error);
+IDE_AVAILABLE_IN_ALL
 IdeRunner             *ide_runtime_create_runner            (IdeRuntime           *self,
                                                              IdeBuildTarget       *build_target);
+IDE_AVAILABLE_IN_ALL
 void                   ide_runtime_prepare_configuration    (IdeRuntime           *self,
                                                              IdeConfiguration     *configuration);
+IDE_AVAILABLE_IN_ALL
 IdeRuntime            *ide_runtime_new                      (IdeContext           *context,
                                                              const gchar          *id,
                                                              const gchar          *title);
+IDE_AVAILABLE_IN_ALL
 const gchar           *ide_runtime_get_id                   (IdeRuntime           *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_runtime_set_id                   (IdeRuntime           *self,
                                                              const gchar          *id);
+IDE_AVAILABLE_IN_ALL
 const gchar           *ide_runtime_get_display_name         (IdeRuntime           *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_runtime_set_display_name         (IdeRuntime           *self,
                                                              const gchar          *display_name);
+IDE_AVAILABLE_IN_ALL
 GFile                 *ide_runtime_translate_file           (IdeRuntime           *self,
                                                              GFile                *file);
 
diff --git a/src/libide/search/ide-search-engine.h b/src/libide/search/ide-search-engine.h
index 5a92917..23fcb71 100644
--- a/src/libide/search/ide-search-engine.h
+++ b/src/libide/search/ide-search-engine.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 G_BEGIN_DECLS
@@ -26,14 +28,18 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeSearchEngine, ide_search_engine, IDE, SEARCH_ENGINE, IdeObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeSearchEngine *ide_search_engine_new           (void);
+IDE_AVAILABLE_IN_ALL
 gboolean         ide_search_engine_get_busy      (IdeSearchEngine      *self);
+IDE_AVAILABLE_IN_ALL
 void             ide_search_engine_search_async  (IdeSearchEngine      *self,
                                                   const gchar          *query,
                                                   guint                 max_results,
                                                   GCancellable         *cancellable,
                                                   GAsyncReadyCallback   callback,
                                                   gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 GListModel      *ide_search_engine_search_finish (IdeSearchEngine      *self,
                                                   GAsyncResult         *result,
                                                   GError              **error);
diff --git a/src/libide/search/ide-search-entry.h b/src/libide/search/ide-search-entry.h
index 98f9e82..93f872d 100644
--- a/src/libide/search/ide-search-entry.h
+++ b/src/libide/search/ide-search-entry.h
@@ -20,12 +20,15 @@
 
 #include <dazzle.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_SEARCH_ENTRY (ide_search_entry_get_type())
 
 G_DECLARE_FINAL_TYPE (IdeSearchEntry, ide_search_entry, IDE, SEARCH_ENTRY, DzlSuggestionEntry)
 
+IDE_AVAILABLE_IN_ALL
 GtkWidget *ide_search_entry_new (void);
 
 G_END_DECLS
diff --git a/src/libide/search/ide-search-provider.h b/src/libide/search/ide-search-provider.h
index cc4a577..089ea19 100644
--- a/src/libide/search/ide-search-provider.h
+++ b/src/libide/search/ide-search-provider.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 G_BEGIN_DECLS
@@ -41,12 +43,14 @@ struct _IdeSearchProviderInterface
                                GError              **error);
 };
 
+IDE_AVAILABLE_IN_ALL
 void       ide_search_provider_search_async  (IdeSearchProvider    *self,
                                               const gchar          *query,
                                               guint                 max_results,
                                               GCancellable         *cancellable,
                                               GAsyncReadyCallback   callback,
                                               gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 GPtrArray *ide_search_provider_search_finish (IdeSearchProvider    *self,
                                               GAsyncResult         *result,
                                               GError              **error);
diff --git a/src/libide/search/ide-search-reducer.h b/src/libide/search/ide-search-reducer.h
index 1c1045c..0177d13 100644
--- a/src/libide/search/ide-search-reducer.h
+++ b/src/libide/search/ide-search-reducer.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 
 G_BEGIN_DECLS
@@ -29,15 +31,21 @@ typedef struct
   gsize      count;
 } IdeSearchReducer;
 
+IDE_AVAILABLE_IN_ALL
 void       ide_search_reducer_init    (IdeSearchReducer  *reducer,
                                        gsize              max_results);
+IDE_AVAILABLE_IN_ALL
 gboolean   ide_search_reducer_accepts (IdeSearchReducer  *reducer,
                                        gfloat             score);
+IDE_AVAILABLE_IN_ALL
 void       ide_search_reducer_take    (IdeSearchReducer  *reducer,
                                        IdeSearchResult   *result);
+IDE_AVAILABLE_IN_ALL
 void       ide_search_reducer_push    (IdeSearchReducer  *reducer,
                                        IdeSearchResult   *result);
+IDE_AVAILABLE_IN_ALL
 void       ide_search_reducer_destroy (IdeSearchReducer  *reducer);
+IDE_AVAILABLE_IN_ALL
 GPtrArray *ide_search_reducer_free    (IdeSearchReducer  *reducer,
                                        gboolean           free_results);
 
diff --git a/src/libide/search/ide-search-result.h b/src/libide/search/ide-search-result.h
index 23437fd..d728e00 100644
--- a/src/libide/search/ide-search-result.h
+++ b/src/libide/search/ide-search-result.h
@@ -21,6 +21,8 @@
 #include <gio/gio.h>
 #include <dazzle.h>
 
+#include "ide-version-macros.h"
+
 #include "diagnostics/ide-source-location.h"
 
 G_BEGIN_DECLS
@@ -46,14 +48,21 @@ struct _IdeSearchResultClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeSearchResult   *ide_search_result_new                 (void);
+IDE_AVAILABLE_IN_ALL
 IdeSourceLocation *ide_search_result_get_source_location (IdeSearchResult       *self);
+IDE_AVAILABLE_IN_ALL
 gint               ide_search_result_compare             (gconstpointer          a,
                                                           gconstpointer          b);
+IDE_AVAILABLE_IN_ALL
 gint               ide_search_result_get_priority        (IdeSearchResult       *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_search_result_set_priority        (IdeSearchResult       *self,
                                                           gint                   priority);
+IDE_AVAILABLE_IN_ALL
 gfloat             ide_search_result_get_score           (IdeSearchResult       *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_search_result_set_score           (IdeSearchResult       *self,
                                                           gfloat                 score);
 
diff --git a/src/libide/snippets/ide-source-snippet-chunk.h b/src/libide/snippets/ide-source-snippet-chunk.h
index 4bb11f5..2a5cca8 100644
--- a/src/libide/snippets/ide-source-snippet-chunk.h
+++ b/src/libide/snippets/ide-source-snippet-chunk.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 
 G_BEGIN_DECLS
@@ -27,21 +29,33 @@ G_BEGIN_DECLS
 G_DECLARE_FINAL_TYPE (IdeSourceSnippetChunk, ide_source_snippet_chunk,
                       IDE, SOURCE_SNIPPET_CHUNK, GObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeSourceSnippetChunk   *ide_source_snippet_chunk_new          (void);
+IDE_AVAILABLE_IN_ALL
 IdeSourceSnippetChunk   *ide_source_snippet_chunk_copy         (IdeSourceSnippetChunk   *chunk);
+IDE_AVAILABLE_IN_ALL
 IdeSourceSnippetContext *ide_source_snippet_chunk_get_context  (IdeSourceSnippetChunk   *chunk);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_chunk_set_context  (IdeSourceSnippetChunk   *chunk,
                                                                 IdeSourceSnippetContext *context);
+IDE_AVAILABLE_IN_ALL
 const gchar             *ide_source_snippet_chunk_get_spec     (IdeSourceSnippetChunk   *chunk);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_chunk_set_spec     (IdeSourceSnippetChunk   *chunk,
                                                                 const gchar             *spec);
+IDE_AVAILABLE_IN_ALL
 gint                     ide_source_snippet_chunk_get_tab_stop (IdeSourceSnippetChunk   *chunk);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_chunk_set_tab_stop (IdeSourceSnippetChunk   *chunk,
                                                                 gint                    tab_stop);
+IDE_AVAILABLE_IN_ALL
 const gchar             *ide_source_snippet_chunk_get_text     (IdeSourceSnippetChunk   *chunk);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_chunk_set_text     (IdeSourceSnippetChunk   *chunk,
                                                                 const gchar             *text);
+IDE_AVAILABLE_IN_ALL
 gboolean                 ide_source_snippet_chunk_get_text_set (IdeSourceSnippetChunk   *chunk);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_chunk_set_text_set (IdeSourceSnippetChunk   *chunk,
                                                                 gboolean                text_set);
 
diff --git a/src/libide/snippets/ide-source-snippet-context.h 
b/src/libide/snippets/ide-source-snippet-context.h
index 9f25219..e554121 100644
--- a/src/libide/snippets/ide-source-snippet-context.h
+++ b/src/libide/snippets/ide-source-snippet-context.h
@@ -20,6 +20,8 @@
 
 #include <glib-object.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_SOURCE_SNIPPET_CONTEXT (ide_source_snippet_context_get_type())
@@ -27,25 +29,36 @@ G_BEGIN_DECLS
 G_DECLARE_FINAL_TYPE (IdeSourceSnippetContext, ide_source_snippet_context,
                       IDE, SOURCE_SNIPPET_CONTEXT, GObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeSourceSnippetContext *ide_source_snippet_context_new                 (void);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_context_emit_changed        (IdeSourceSnippetContext *context);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_context_clear_variables     (IdeSourceSnippetContext *context);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_context_add_variable        (IdeSourceSnippetContext *context,
                                                                          const gchar             *key,
                                                                          const gchar             *value);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_context_add_shared_variable (IdeSourceSnippetContext *context,
                                                                          const gchar             *key,
                                                                          const gchar             *value);
+IDE_AVAILABLE_IN_ALL
 const gchar             *ide_source_snippet_context_get_variable        (IdeSourceSnippetContext *context,
                                                                          const gchar             *key);
+IDE_AVAILABLE_IN_ALL
 gchar                   *ide_source_snippet_context_expand              (IdeSourceSnippetContext *context,
                                                                          const gchar             *input);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_context_set_tab_width       (IdeSourceSnippetContext *context,
                                                                          gint                     tab_size);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_context_set_use_spaces      (IdeSourceSnippetContext *context,
                                                                          gboolean                 
use_spaces);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_context_set_line_prefix     (IdeSourceSnippetContext *context,
                                                                          const gchar             
*line_prefix);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_context_dump                (IdeSourceSnippetContext *context);
 
 G_END_DECLS
diff --git a/src/libide/snippets/ide-source-snippet.h b/src/libide/snippets/ide-source-snippet.h
index 4654d59..b2943b8 100644
--- a/src/libide/snippets/ide-source-snippet.h
+++ b/src/libide/snippets/ide-source-snippet.h
@@ -20,6 +20,8 @@
 
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 G_BEGIN_DECLS
@@ -28,30 +30,46 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeSourceSnippet, ide_source_snippet, IDE, SOURCE_SNIPPET, GObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeSourceSnippet        *ide_source_snippet_new              (const gchar           *trigger,
                                                               const gchar           *language);
+IDE_AVAILABLE_IN_ALL
 IdeSourceSnippet        *ide_source_snippet_copy             (IdeSourceSnippet      *self);
+IDE_AVAILABLE_IN_ALL
 const gchar             *ide_source_snippet_get_trigger      (IdeSourceSnippet      *self);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_set_trigger      (IdeSourceSnippet      *self,
                                                               const gchar           *trigger);
+IDE_AVAILABLE_IN_ALL
 const gchar             *ide_source_snippet_get_language     (IdeSourceSnippet      *self);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_set_language     (IdeSourceSnippet      *self,
                                                               const gchar           *language);
+IDE_AVAILABLE_IN_ALL
 const gchar             *ide_source_snippet_get_description  (IdeSourceSnippet      *self);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_set_description  (IdeSourceSnippet      *self,
                                                               const gchar           *description);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_add_chunk        (IdeSourceSnippet      *self,
                                                               IdeSourceSnippetChunk *chunk);
+IDE_AVAILABLE_IN_ALL
 guint                    ide_source_snippet_get_n_chunks     (IdeSourceSnippet      *self);
+IDE_AVAILABLE_IN_ALL
 gint                     ide_source_snippet_get_tab_stop     (IdeSourceSnippet      *self);
+IDE_AVAILABLE_IN_ALL
 IdeSourceSnippetChunk   *ide_source_snippet_get_nth_chunk    (IdeSourceSnippet      *self,
                                                               guint                  n);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_get_chunk_range  (IdeSourceSnippet      *self,
                                                               IdeSourceSnippetChunk *chunk,
                                                               GtkTextIter           *begin,
                                                               GtkTextIter           *end);
+IDE_AVAILABLE_IN_ALL
 IdeSourceSnippetContext *ide_source_snippet_get_context      (IdeSourceSnippet      *self);
+IDE_AVAILABLE_IN_ALL
 const gchar             *ide_source_snippet_get_snippet_text (IdeSourceSnippet      *self);
+IDE_AVAILABLE_IN_ALL
 void                     ide_source_snippet_set_snippet_text (IdeSourceSnippet      *self,
                                                               const gchar           *snippet_text);
 
diff --git a/src/libide/snippets/ide-source-snippets-manager.h 
b/src/libide/snippets/ide-source-snippets-manager.h
index 5dbab96..39c1a0f 100644
--- a/src/libide/snippets/ide-source-snippets-manager.h
+++ b/src/libide/snippets/ide-source-snippets-manager.h
@@ -20,6 +20,8 @@
 
 #include <gtksourceview/gtksource.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 G_BEGIN_DECLS
@@ -28,15 +30,19 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeSourceSnippetsManager, ide_source_snippets_manager, IDE, SOURCE_SNIPPETS_MANAGER, 
GObject)
 
+IDE_AVAILABLE_IN_ALL
 void               ide_source_snippets_manager_load_async          (IdeSourceSnippetsManager  *self,
                                                                     GCancellable              *cancellable,
                                                                     GAsyncReadyCallback        callback,
                                                                     gpointer                   user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_source_snippets_manager_load_finish         (IdeSourceSnippetsManager  *self,
                                                                     GAsyncResult              *result,
                                                                     GError                   **error);
+IDE_AVAILABLE_IN_ALL
 IdeSourceSnippets *ide_source_snippets_manager_get_for_language    (IdeSourceSnippetsManager  *self,
                                                                     GtkSourceLanguage         *language);
+IDE_AVAILABLE_IN_ALL
 IdeSourceSnippets *ide_source_snippets_manager_get_for_language_id (IdeSourceSnippetsManager  *self,
                                                                     const gchar               *language_id);
 
diff --git a/src/libide/snippets/ide-source-snippets.h b/src/libide/snippets/ide-source-snippets.h
index e0551dc..6f01813 100644
--- a/src/libide/snippets/ide-source-snippets.h
+++ b/src/libide/snippets/ide-source-snippets.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "snippets/ide-source-snippet.h"
 
 G_BEGIN_DECLS
@@ -28,13 +30,19 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeSourceSnippets, ide_source_snippets, IDE, SOURCE_SNIPPETS, GObject)
 
+IDE_AVAILABLE_IN_ALL
 void               ide_source_snippets_add     (IdeSourceSnippets *snippets,
                                                 IdeSourceSnippet  *snippet);
+IDE_AVAILABLE_IN_ALL
 void               ide_source_snippets_clear   (IdeSourceSnippets *snippets);
+IDE_AVAILABLE_IN_ALL
 void               ide_source_snippets_merge   (IdeSourceSnippets *snippets,
                                                 IdeSourceSnippets *other);
+IDE_AVAILABLE_IN_ALL
 guint              ide_source_snippets_count   (IdeSourceSnippets *self);
+IDE_AVAILABLE_IN_ALL
 IdeSourceSnippets *ide_source_snippets_new     (void);
+IDE_AVAILABLE_IN_ALL
 void               ide_source_snippets_foreach (IdeSourceSnippets *snippets,
                                                 const gchar       *prefix,
                                                 GFunc              foreach_func,
diff --git a/src/libide/sourceview/ide-completion-item.h b/src/libide/sourceview/ide-completion-item.h
index 273c652..289b0a8 100644
--- a/src/libide/sourceview/ide-completion-item.h
+++ b/src/libide/sourceview/ide-completion-item.h
@@ -20,6 +20,8 @@
 
 #include <gtksourceview/gtksource.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_COMPLETION_ITEM            (ide_completion_item_get_type())
@@ -66,16 +68,22 @@ struct _IdeCompletionItemClass
 
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (IdeCompletionItem, g_object_unref)
 
+IDE_AVAILABLE_IN_ALL
 GType              ide_completion_item_get_type        (void);
+IDE_AVAILABLE_IN_ALL
 IdeCompletionItem *ide_completion_item_new             (void);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_completion_item_match           (IdeCompletionItem   *self,
                                                         const gchar         *query,
                                                         const gchar         *casefold);
+IDE_AVAILABLE_IN_ALL
 void               ide_completion_item_set_priority    (IdeCompletionItem   *self,
                                                         guint                priority);
+IDE_AVAILABLE_IN_ALL
 gboolean           ide_completion_item_fuzzy_match     (const gchar         *haystack,
                                                         const gchar         *casefold_needle,
                                                         guint               *priority);
+IDE_AVAILABLE_IN_ALL
 gchar             *ide_completion_item_fuzzy_highlight (const gchar         *haystack,
                                                         const gchar         *casefold_query);
 
diff --git a/src/libide/sourceview/ide-completion-provider.h b/src/libide/sourceview/ide-completion-provider.h
index 5f2ebe9..c10f8b9 100644
--- a/src/libide/sourceview/ide-completion-provider.h
+++ b/src/libide/sourceview/ide-completion-provider.h
@@ -20,6 +20,8 @@
 
 #include <gtksourceview/gtksource.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 
 G_BEGIN_DECLS
@@ -40,10 +42,15 @@ struct _IdeCompletionProviderInterface
                 IdeContext            *context);
 };
 
+IDE_AVAILABLE_IN_ALL
 GType     ide_completion_provider_get_type                     (void);
+IDE_AVAILABLE_IN_ALL
 gboolean  ide_completion_provider_context_in_comment           (GtkSourceCompletionContext *context);
+IDE_AVAILABLE_IN_ALL
 gboolean  ide_completion_provider_context_in_comment_or_string (GtkSourceCompletionContext *context);
+IDE_AVAILABLE_IN_ALL
 gchar    *ide_completion_provider_context_current_word         (GtkSourceCompletionContext *context);
+IDE_AVAILABLE_IN_ALL
 void      ide_completion_provider_load                         (IdeCompletionProvider      *self,
                                                                 IdeContext                 *context);
 
diff --git a/src/libide/sourceview/ide-completion-results.h b/src/libide/sourceview/ide-completion-results.h
index 46d015a..3e8bf3e 100644
--- a/src/libide/sourceview/ide-completion-results.h
+++ b/src/libide/sourceview/ide-completion-results.h
@@ -20,6 +20,8 @@
 
 #include <gtksourceview/gtksource.h>
 
+#include "ide-version-macros.h"
+
 #include "sourceview/ide-completion-item.h"
 
 G_BEGIN_DECLS
@@ -47,18 +49,27 @@ struct _IdeCompletionResultsClass
                    IdeCompletionItem    *right);
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeCompletionResults *ide_completion_results_new                    (const gchar                 *query);
+IDE_AVAILABLE_IN_ALL
 const gchar          *ide_completion_results_get_query              (IdeCompletionResults        *self);
+IDE_AVAILABLE_IN_ALL
 void                  ide_completion_results_invalidate_sort        (IdeCompletionResults        *self);
+IDE_AVAILABLE_IN_ALL
 void                  ide_completion_results_take_proposal          (IdeCompletionResults        *self,
                                                                      IdeCompletionItem           *proposal);
+IDE_AVAILABLE_IN_ALL
 void                  ide_completion_results_present                (IdeCompletionResults        *self,
                                                                      GtkSourceCompletionProvider *provider,
                                                                      GtkSourceCompletionContext  *context);
+IDE_AVAILABLE_IN_ALL
 gboolean              ide_completion_results_replay                 (IdeCompletionResults        *self,
                                                                      const gchar                 *query);
+IDE_AVAILABLE_IN_ALL
 guint                 ide_completion_results_get_size               (IdeCompletionResults        *self);
+IDE_AVAILABLE_IN_ALL
 gint                  ide_completion_results_get_insert_offset      (IdeCompletionResults        *self);
+IDE_AVAILABLE_IN_ALL
 gint                  ide_completion_results_get_end_offset         (IdeCompletionResults        *self);
 
 G_END_DECLS
diff --git a/src/libide/sourceview/ide-indenter.h b/src/libide/sourceview/ide-indenter.h
index f2ea492..6d8d5d7 100644
--- a/src/libide/sourceview/ide-indenter.h
+++ b/src/libide/sourceview/ide-indenter.h
@@ -20,6 +20,8 @@
 
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 G_BEGIN_DECLS
@@ -42,8 +44,10 @@ struct _IdeIndenterInterface
                             GdkEventKey   *event);
 };
 
+IDE_AVAILABLE_IN_ALL
 gboolean  ide_indenter_is_trigger (IdeIndenter *self,
                                    GdkEventKey *event);
+IDE_AVAILABLE_IN_ALL
 gchar    *ide_indenter_format     (IdeIndenter *self,
                                    GtkTextView *text_view,
                                    GtkTextIter *begin,
diff --git a/src/libide/sourceview/ide-language.h b/src/libide/sourceview/ide-language.h
index 5e534fd..60afbe0 100644
--- a/src/libide/sourceview/ide-language.h
+++ b/src/libide/sourceview/ide-language.h
@@ -20,8 +20,11 @@
 
 #include <gtksourceview/gtksource.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
+IDE_AVAILABLE_IN_ALL
 gchar *ide_language_format_header (GtkSourceLanguage *language,
                                    const gchar       *header);
 
diff --git a/src/libide/sourceview/ide-source-map.h b/src/libide/sourceview/ide-source-map.h
index 0626ca1..6a4e882 100644
--- a/src/libide/sourceview/ide-source-map.h
+++ b/src/libide/sourceview/ide-source-map.h
@@ -20,6 +20,8 @@
 
 #include <gtksourceview/gtksource.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_SOURCE_MAP (ide_source_map_get_type())
diff --git a/src/libide/sourceview/ide-source-style-scheme.h b/src/libide/sourceview/ide-source-style-scheme.h
index 5ec408f..11d7606 100644
--- a/src/libide/sourceview/ide-source-style-scheme.h
+++ b/src/libide/sourceview/ide-source-style-scheme.h
@@ -20,8 +20,11 @@
 
 #include <gtksourceview/gtksource.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
+IDE_AVAILABLE_IN_ALL
 gboolean ide_source_style_scheme_apply_style (GtkSourceStyleScheme *style_scheme,
                                               const gchar          *style,
                                               GtkTextTag           *tag);
diff --git a/src/libide/sourceview/ide-source-view.h b/src/libide/sourceview/ide-source-view.h
index 47b8858..d083963 100644
--- a/src/libide/sourceview/ide-source-view.h
+++ b/src/libide/sourceview/ide-source-view.h
@@ -20,6 +20,8 @@
 
 #include <gtksourceview/gtksource.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 
 G_BEGIN_DECLS
@@ -341,85 +343,133 @@ struct _IdeSourceViewClass
   gpointer _reserved24;
 };
 
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_clear_snippets            (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 IdeSourceSnippet           *ide_source_view_get_current_snippet       (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 guint                       ide_source_view_get_visual_column         (IdeSourceView              *self,
                                                                        const GtkTextIter          *location);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_get_visual_position       (IdeSourceView              *self,
                                                                        guint                      *line,
                                                                        guint                      
*line_column);
+IDE_AVAILABLE_IN_ALL
 gint                        ide_source_view_get_count                 (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                    ide_source_view_get_enable_word_completion(IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 IdeFileSettings            *ide_source_view_get_file_settings         (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 const PangoFontDescription *ide_source_view_get_font_desc             (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                    ide_source_view_get_highlight_current_line(IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                    ide_source_view_get_insert_matching_brace (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_get_iter_at_visual_column (IdeSourceView              *self,
                                                                        guint                      column,
                                                                        GtkTextIter                *location);
+IDE_AVAILABLE_IN_ALL
 const gchar                *ide_source_view_get_mode_display_name     (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 const gchar                *ide_source_view_get_mode_name             (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                    ide_source_view_get_overwrite_braces      (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                    ide_source_view_get_overwrite             (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 guint                       ide_source_view_get_scroll_offset         (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                    ide_source_view_get_show_grid_lines       (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                    ide_source_view_get_show_line_changes     (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                    ide_source_view_get_show_line_diagnostics (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                    ide_source_view_get_show_line_numbers     (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                    ide_source_view_get_snippet_completion    (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 gboolean                    ide_source_view_get_spell_checking        (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_get_visible_rect          (IdeSourceView              *self,
                                                                        GdkRectangle               
*visible_rect);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_jump                      (IdeSourceView              *self,
                                                                        const GtkTextIter          *from,
                                                                        const GtkTextIter          *to);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_pop_snippet               (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_push_snippet              (IdeSourceView              *self,
                                                                        IdeSourceSnippet           *snippet,
                                                                        const GtkTextIter          *location);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_rollback_search           (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_save_search               (IdeSourceView              *self,
                                                                        const gchar                
*search_text);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_set_count                 (IdeSourceView              *self,
                                                                        gint                        count);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_set_enable_word_completion(IdeSourceView              *self,
                                                                        gboolean                    
enable_word_copletion);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_set_font_desc             (IdeSourceView              *self,
                                                                        const PangoFontDescription 
*font_desc);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_set_font_name             (IdeSourceView              *self,
                                                                        const gchar                
*font_name);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_set_highlight_current_line(IdeSourceView              *self,
                                                                        gboolean                    
highlight_current_line);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_set_insert_matching_brace (IdeSourceView              *self,
                                                                        gboolean                    
insert_matching_brace);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_set_misspelled_word       (IdeSourceView              *self,
                                                                        GtkTextIter                *start,
                                                                        GtkTextIter                *end);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_set_overwrite_braces      (IdeSourceView              *self,
                                                                        gboolean                    
overwrite_braces);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_set_scroll_offset         (IdeSourceView              *self,
                                                                        guint                       
scroll_offset);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_set_show_grid_lines       (IdeSourceView              *self,
                                                                        gboolean                    
show_grid_lines);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_set_show_line_changes     (IdeSourceView              *self,
                                                                        gboolean                    
show_line_changes);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_set_show_line_diagnostics (IdeSourceView              *self,
                                                                        gboolean                    
show_line_diagnostics);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_set_show_line_numbers     (IdeSourceView              *self,
                                                                        gboolean                    
show_line_numbers);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_set_snippet_completion    (IdeSourceView              *self,
                                                                        gboolean                    
snippet_completion);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_set_spell_checking        (IdeSourceView              *self,
                                                                        gboolean                    enable);
+IDE_AVAILABLE_IN_ALL
 gboolean                    ide_source_view_move_mark_onscreen        (IdeSourceView              *self,
                                                                        GtkTextMark                *mark);
+IDE_AVAILABLE_IN_ALL
 gboolean                    ide_source_view_place_cursor_onscreen     (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_clear_search              (IdeSourceView              *self);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_scroll_mark_onscreen      (IdeSourceView              *self,
                                                                        GtkTextMark                *mark,
                                                                        gboolean                    use_align,
                                                                        gdouble                     alignx,
                                                                        gdouble                     aligny);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_scroll_to_mark            (IdeSourceView              *self,
                                                                        GtkTextMark                *mark,
                                                                        gdouble                     
within_margin,
@@ -427,6 +477,7 @@ void                        ide_source_view_scroll_to_mark            (IdeSource
                                                                        gdouble                     xalign,
                                                                        gdouble                     yalign,
                                                                        gboolean                    
animate_scroll);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_scroll_to_iter            (IdeSourceView              *self,
                                                                        const GtkTextIter          *iter,
                                                                        gdouble                     
within_margin,
@@ -434,6 +485,7 @@ void                        ide_source_view_scroll_to_iter            (IdeSource
                                                                        gdouble                     xalign,
                                                                        gdouble                     yalign,
                                                                        gboolean                    
animate_scroll);
+IDE_AVAILABLE_IN_ALL
 void                        ide_source_view_scroll_to_insert          (IdeSourceView              *self);
 const gchar                *_ide_source_view_get_mode_name            (IdeSourceView              *self) 
G_GNUC_INTERNAL;
 void                        _ide_source_view_set_count                (IdeSourceView              *self,
diff --git a/src/libide/subprocess/ide-subprocess-launcher.h b/src/libide/subprocess/ide-subprocess-launcher.h
index 6120fe3..360774f 100644
--- a/src/libide/subprocess/ide-subprocess-launcher.h
+++ b/src/libide/subprocess/ide-subprocess-launcher.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 
 G_BEGIN_DECLS
@@ -47,54 +49,80 @@ struct _IdeSubprocessLauncherClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeSubprocessLauncher *ide_subprocess_launcher_new                 (GSubprocessFlags        flags);
+IDE_AVAILABLE_IN_ALL
 const gchar           *ide_subprocess_launcher_get_cwd             (IdeSubprocessLauncher  *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_subprocess_launcher_set_cwd             (IdeSubprocessLauncher  *self,
                                                                     const gchar            *cwd);
+IDE_AVAILABLE_IN_ALL
 GSubprocessFlags       ide_subprocess_launcher_get_flags           (IdeSubprocessLauncher  *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_subprocess_launcher_set_flags           (IdeSubprocessLauncher  *self,
                                                                     GSubprocessFlags        flags);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_subprocess_launcher_get_run_on_host     (IdeSubprocessLauncher  *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_subprocess_launcher_set_run_on_host     (IdeSubprocessLauncher  *self,
                                                                     gboolean                run_on_host);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_subprocess_launcher_get_clear_env       (IdeSubprocessLauncher  *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_subprocess_launcher_set_clear_env       (IdeSubprocessLauncher  *self,
                                                                     gboolean                clear_env);
+IDE_AVAILABLE_IN_ALL
 const gchar * const   *ide_subprocess_launcher_get_environ         (IdeSubprocessLauncher  *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_subprocess_launcher_set_environ         (IdeSubprocessLauncher  *self,
                                                                     const gchar * const    *environ_);
+IDE_AVAILABLE_IN_ALL
 const gchar           *ide_subprocess_launcher_getenv              (IdeSubprocessLauncher  *self,
                                                                     const gchar            *key);
+IDE_AVAILABLE_IN_ALL
 void                   ide_subprocess_launcher_setenv              (IdeSubprocessLauncher  *self,
                                                                     const gchar            *key,
                                                                     const gchar            *value,
                                                                     gboolean                replace);
+IDE_AVAILABLE_IN_ALL
 void                   ide_subprocess_launcher_insert_argv         (IdeSubprocessLauncher  *self,
                                                                     guint                   index,
                                                                     const gchar            *arg);
+IDE_AVAILABLE_IN_ALL
 void                   ide_subprocess_launcher_replace_argv        (IdeSubprocessLauncher  *self,
                                                                     guint                   index,
                                                                     const gchar            *arg);
+IDE_AVAILABLE_IN_ALL
 void                   ide_subprocess_launcher_overlay_environment (IdeSubprocessLauncher  *self,
                                                                     IdeEnvironment         *environment);
+IDE_AVAILABLE_IN_ALL
 const gchar * const   *ide_subprocess_launcher_get_argv            (IdeSubprocessLauncher  *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_subprocess_launcher_push_args           (IdeSubprocessLauncher  *self,
                                                                     const gchar * const    *args);
+IDE_AVAILABLE_IN_ALL
 void                   ide_subprocess_launcher_push_argv           (IdeSubprocessLauncher  *self,
                                                                     const gchar            *argv);
+IDE_AVAILABLE_IN_ALL
 gchar                 *ide_subprocess_launcher_pop_argv            (IdeSubprocessLauncher  *self) 
G_GNUC_WARN_UNUSED_RESULT;
+IDE_AVAILABLE_IN_ALL
 IdeSubprocess         *ide_subprocess_launcher_spawn               (IdeSubprocessLauncher  *self,
                                                                     GCancellable           *cancellable,
                                                                     GError                **error);
+IDE_AVAILABLE_IN_ALL
 void                   ide_subprocess_launcher_set_stdout_file_path(IdeSubprocessLauncher  *self,
                                                                     const gchar            
*stdout_file_path);
+IDE_AVAILABLE_IN_ALL
 void                   ide_subprocess_launcher_take_fd             (IdeSubprocessLauncher  *self,
                                                                     gint                    source_fd,
                                                                     gint                    dest_fd);
+IDE_AVAILABLE_IN_ALL
 void                   ide_subprocess_launcher_take_stdin_fd       (IdeSubprocessLauncher  *self,
                                                                     gint                    stdin_fd);
+IDE_AVAILABLE_IN_ALL
 void                   ide_subprocess_launcher_take_stdout_fd      (IdeSubprocessLauncher  *self,
                                                                     gint                    stdout_fd);
+IDE_AVAILABLE_IN_ALL
 void                   ide_subprocess_launcher_take_stderr_fd      (IdeSubprocessLauncher  *self,
                                                                     gint                    stderr_fd);
 
diff --git a/src/libide/subprocess/ide-subprocess.h b/src/libide/subprocess/ide-subprocess.h
index 4c46a65..5b1ec50 100644
--- a/src/libide/subprocess/ide-subprocess.h
+++ b/src/libide/subprocess/ide-subprocess.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_SUBPROCESS (ide_subprocess_get_type())
@@ -87,68 +89,93 @@ struct _IdeSubprocessInterface
                                              GError              **error);
 };
 
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_subprocess_get_identifier     (IdeSubprocess *self);
+IDE_AVAILABLE_IN_ALL
 GInputStream  *ide_subprocess_get_stdout_pipe    (IdeSubprocess *self);
+IDE_AVAILABLE_IN_ALL
 GInputStream  *ide_subprocess_get_stderr_pipe    (IdeSubprocess *self);
+IDE_AVAILABLE_IN_ALL
 GOutputStream *ide_subprocess_get_stdin_pipe     (IdeSubprocess *self);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_subprocess_wait               (IdeSubprocess        *self,
                                                   GCancellable         *cancellable,
                                                   GError              **error);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_subprocess_wait_check         (IdeSubprocess        *self,
                                                   GCancellable         *cancellable,
                                                   GError              **error);
+IDE_AVAILABLE_IN_ALL
 void           ide_subprocess_wait_async         (IdeSubprocess        *self,
                                                   GCancellable         *cancellable,
                                                   GAsyncReadyCallback   callback,
                                                   gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_subprocess_wait_finish        (IdeSubprocess        *self,
                                                   GAsyncResult         *result,
                                                   GError              **error);
+IDE_AVAILABLE_IN_ALL
 void           ide_subprocess_wait_check_async   (IdeSubprocess        *self,
                                                   GCancellable         *cancellable,
                                                   GAsyncReadyCallback   callback,
                                                   gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_subprocess_wait_check_finish  (IdeSubprocess        *self,
                                                   GAsyncResult         *result,
                                                   GError              **error);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_subprocess_check_exit_status  (IdeSubprocess        *self,
                                                   GError              **error);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_subprocess_get_successful     (IdeSubprocess        *self);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_subprocess_get_if_exited      (IdeSubprocess        *self);
+IDE_AVAILABLE_IN_ALL
 gint           ide_subprocess_get_exit_status    (IdeSubprocess        *self);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_subprocess_get_if_signaled    (IdeSubprocess        *self);
+IDE_AVAILABLE_IN_ALL
 gint           ide_subprocess_get_term_sig       (IdeSubprocess        *self);
+IDE_AVAILABLE_IN_ALL
 gint           ide_subprocess_get_status         (IdeSubprocess        *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_subprocess_send_signal        (IdeSubprocess        *self,
                                                   gint                  signal_num);
+IDE_AVAILABLE_IN_ALL
 void           ide_subprocess_force_exit         (IdeSubprocess        *self);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_subprocess_communicate        (IdeSubprocess        *self,
                                                   GBytes               *stdin_buf,
                                                   GCancellable         *cancellable,
                                                   GBytes              **stdout_buf,
                                                   GBytes              **stderr_buf,
                                                   GError              **error);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_subprocess_communicate_utf8   (IdeSubprocess        *self,
                                                   const gchar          *stdin_buf,
                                                   GCancellable         *cancellable,
                                                   gchar               **stdout_buf,
                                                   gchar               **stderr_buf,
                                                   GError              **error);
+IDE_AVAILABLE_IN_ALL
 void           ide_subprocess_communicate_async  (IdeSubprocess        *self,
                                                   GBytes               *stdin_buf,
                                                   GCancellable         *cancellable,
                                                   GAsyncReadyCallback   callback,
                                                   gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_subprocess_communicate_finish (IdeSubprocess        *self,
                                                   GAsyncResult         *result,
                                                   GBytes              **stdout_buf,
                                                   GBytes              **stderr_buf,
                                                   GError              **error);
+IDE_AVAILABLE_IN_ALL
 void           ide_subprocess_communicate_utf8_async  (IdeSubprocess        *self,
                                                        const gchar          *stdin_buf,
                                                        GCancellable         *cancellable,
                                                        GAsyncReadyCallback   callback,
                                                        gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean       ide_subprocess_communicate_utf8_finish (IdeSubprocess        *self,
                                                        GAsyncResult         *result,
                                                        gchar               **stdout_buf,
diff --git a/src/libide/symbols/ide-code-index-entry.h b/src/libide/symbols/ide-code-index-entry.h
index cbe0c81..9bc62f5 100644
--- a/src/libide/symbols/ide-code-index-entry.h
+++ b/src/libide/symbols/ide-code-index-entry.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 #include "symbols/ide-symbol.h"
 
@@ -32,10 +34,15 @@ struct _IdeCodeIndexEntryClass
   GObjectClass parent;
 };
 
+IDE_AVAILABLE_IN_ALL
 gchar           *ide_code_index_entry_get_key   (IdeCodeIndexEntry *self);
+IDE_AVAILABLE_IN_ALL
 gchar           *ide_code_index_entry_get_name  (IdeCodeIndexEntry *self);
+IDE_AVAILABLE_IN_ALL
 IdeSymbolKind    ide_code_index_entry_get_kind  (IdeCodeIndexEntry *self);
+IDE_AVAILABLE_IN_ALL
 IdeSymbolFlags   ide_code_index_entry_get_flags (IdeCodeIndexEntry *self);
+IDE_AVAILABLE_IN_ALL
 void             ide_code_index_entry_get_range (IdeCodeIndexEntry *self,
                                                  guint             *begin_line,
                                                  guint             *begin_line_offset,
diff --git a/src/libide/symbols/ide-code-indexer.h b/src/libide/symbols/ide-code-indexer.h
index 698ea51..880ff67 100644
--- a/src/libide/symbols/ide-code-indexer.h
+++ b/src/libide/symbols/ide-code-indexer.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 #include "symbols/ide-code-index-entries.h"
 
@@ -46,16 +48,19 @@ struct _IdeCodeIndexerInterface
                                                   GError              **error);
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeCodeIndexEntries  *ide_code_indexer_index_file           (IdeCodeIndexer       *self,
                                                              GFile                *file,
                                                              gchar               **build_flags,
                                                              GCancellable         *cancellable,
                                                              GError              **error);
+IDE_AVAILABLE_IN_ALL
 void                  ide_code_indexer_generate_key_async   (IdeCodeIndexer       *self,
                                                              IdeSourceLocation    *location,
                                                              GCancellable         *cancellable,
                                                              GAsyncReadyCallback   callback,
                                                              gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gchar                *ide_code_indexer_generate_key_finish  (IdeCodeIndexer       *self,
                                                              GAsyncResult         *result,
                                                              GError              **error);
diff --git a/src/libide/symbols/ide-symbol-resolver.h b/src/libide/symbols/ide-symbol-resolver.h
index c26fc71..d9eaef0 100644
--- a/src/libide/symbols/ide-symbol-resolver.h
+++ b/src/libide/symbols/ide-symbol-resolver.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 #include "symbols/ide-symbol-tree.h"
 
@@ -67,37 +69,46 @@ struct _IdeSymbolResolverInterface
                                               GError              **error);
 };
 
+IDE_AVAILABLE_IN_ALL
 void           ide_symbol_resolver_load                      (IdeSymbolResolver    *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_symbol_resolver_lookup_symbol_async       (IdeSymbolResolver    *self,
                                                               IdeSourceLocation    *location,
                                                               GCancellable         *cancellable,
                                                               GAsyncReadyCallback   callback,
                                                               gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 IdeSymbol     *ide_symbol_resolver_lookup_symbol_finish      (IdeSymbolResolver    *self,
                                                               GAsyncResult         *result,
                                                               GError              **error);
+IDE_AVAILABLE_IN_ALL
 void           ide_symbol_resolver_get_symbol_tree_async     (IdeSymbolResolver    *self,
                                                               GFile                *file,
                                                               IdeBuffer            *buffer,
                                                               GCancellable         *cancellable,
                                                               GAsyncReadyCallback   callback,
                                                               gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 IdeSymbolTree *ide_symbol_resolver_get_symbol_tree_finish    (IdeSymbolResolver    *self,
                                                               GAsyncResult         *result,
                                                               GError              **error);
+IDE_AVAILABLE_IN_ALL
 void           ide_symbol_resolver_find_references_async     (IdeSymbolResolver    *self,
                                                               IdeSourceLocation    *location,
                                                               GCancellable         *cancellable,
                                                               GAsyncReadyCallback   callback,
                                                               gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 GPtrArray     *ide_symbol_resolver_find_references_finish    (IdeSymbolResolver    *self,
                                                               GAsyncResult         *result,
                                                               GError              **error);
+IDE_AVAILABLE_IN_ALL
 void           ide_symbol_resolver_find_nearest_scope_async  (IdeSymbolResolver    *self,
                                                               IdeSourceLocation    *location,
                                                               GCancellable         *cancellable,
                                                               GAsyncReadyCallback   callback,
                                                               gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 IdeSymbol     *ide_symbol_resolver_find_nearest_scope_finish (IdeSymbolResolver    *self,
                                                               GAsyncResult         *result,
                                                               GError              **error);
diff --git a/src/libide/symbols/ide-symbol.h b/src/libide/symbols/ide-symbol.h
index 5b56d5e..09df6d5 100644
--- a/src/libide/symbols/ide-symbol.h
+++ b/src/libide/symbols/ide-symbol.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-types.h"
 
 G_BEGIN_DECLS
@@ -84,21 +86,32 @@ typedef enum
   IDE_SYMBOL_FLAGS_IS_DEFINITION = 1 << 3
 } IdeSymbolFlags;
 
+IDE_AVAILABLE_IN_ALL
 GType              ide_symbol_get_type                 (void);
+IDE_AVAILABLE_IN_ALL
 IdeSymbol         *ide_symbol_ref                      (IdeSymbol *self);
+IDE_AVAILABLE_IN_ALL
 void               ide_symbol_unref                    (IdeSymbol *self);
+IDE_AVAILABLE_IN_ALL
 IdeSymbolKind      ide_symbol_get_kind                 (IdeSymbol *self);
+IDE_AVAILABLE_IN_ALL
 IdeSymbolFlags     ide_symbol_get_flags                (IdeSymbol *self);
+IDE_AVAILABLE_IN_ALL
 const gchar       *ide_symbol_get_name                 (IdeSymbol *self);
+IDE_AVAILABLE_IN_ALL
 IdeSourceLocation *ide_symbol_get_canonical_location   (IdeSymbol *self);
+IDE_AVAILABLE_IN_ALL
 IdeSourceLocation *ide_symbol_get_declaration_location (IdeSymbol *self);
+IDE_AVAILABLE_IN_ALL
 IdeSourceLocation *ide_symbol_get_definition_location  (IdeSymbol *self);
+IDE_AVAILABLE_IN_ALL
 IdeSymbol         *ide_symbol_new                      (const gchar           *name,
                                                         IdeSymbolKind          kind,
                                                         IdeSymbolFlags         flags,
                                                         IdeSourceLocation     *declaration_location,
                                                         IdeSourceLocation     *definition_location,
                                                         IdeSourceLocation     *canonical_location);
+IDE_AVAILABLE_IN_ALL
 const gchar       *ide_symbol_kind_get_icon_name       (IdeSymbolKind          kind);
 
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (IdeSymbol, ide_symbol_unref)
diff --git a/src/libide/symbols/ide-tags-builder.h b/src/libide/symbols/ide-tags-builder.h
index 9cdca71..2e98e05 100644
--- a/src/libide/symbols/ide-tags-builder.h
+++ b/src/libide/symbols/ide-tags-builder.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_TAGS_BUILDER (ide_tags_builder_get_type ())
@@ -41,12 +43,14 @@ struct _IdeTagsBuilderInterface
                             GError              **error);
 };
 
+IDE_AVAILABLE_IN_ALL
 void      ide_tags_builder_build_async  (IdeTagsBuilder       *self,
                                          GFile                *directory_or_file,
                                          gboolean              recursive,
                                          GCancellable         *cancellable,
                                          GAsyncReadyCallback   callback,
                                          gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean  ide_tags_builder_build_finish (IdeTagsBuilder       *self,
                                          GAsyncResult         *result,
                                          GError              **error);
diff --git a/src/libide/template/ide-project-template.h b/src/libide/template/ide-project-template.h
index 57890ca..c0379bd 100644
--- a/src/libide/template/ide-project-template.h
+++ b/src/libide/template/ide-project-template.h
@@ -20,6 +20,8 @@
 
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_PROJECT_TEMPLATE (ide_project_template_get_type())
@@ -46,17 +48,25 @@ struct _IdeProjectTemplateInterface
                                   GError              **error);
 };
 
+IDE_AVAILABLE_IN_ALL
 gchar      *ide_project_template_get_id          (IdeProjectTemplate  *self);
+IDE_AVAILABLE_IN_ALL
 gchar      *ide_project_template_get_name        (IdeProjectTemplate  *self);
+IDE_AVAILABLE_IN_ALL
 gchar      *ide_project_template_get_description (IdeProjectTemplate  *self);
+IDE_AVAILABLE_IN_ALL
 GtkWidget  *ide_project_template_get_widget      (IdeProjectTemplate  *self);
+IDE_AVAILABLE_IN_ALL
 gchar     **ide_project_template_get_languages   (IdeProjectTemplate  *self);
+IDE_AVAILABLE_IN_ALL
 gchar      *ide_project_template_get_icon_name   (IdeProjectTemplate  *self);
+IDE_AVAILABLE_IN_ALL
 void        ide_project_template_expand_async    (IdeProjectTemplate   *self,
                                                   GHashTable           *params,
                                                   GCancellable         *cancellable,
                                                   GAsyncReadyCallback   callback,
                                                   gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean    ide_project_template_expand_finish   (IdeProjectTemplate   *self,
                                                   GAsyncResult         *result,
                                                   GError              **error);
diff --git a/src/libide/template/ide-template-provider.h b/src/libide/template/ide-template-provider.h
index 5536887..b20f238 100644
--- a/src/libide/template/ide-template-provider.h
+++ b/src/libide/template/ide-template-provider.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "template/ide-project-template.h"
 
 G_BEGIN_DECLS
@@ -33,6 +35,7 @@ struct _IdeTemplateProviderInterface
   GList *(*get_project_templates) (IdeTemplateProvider *self);
 };
 
+IDE_AVAILABLE_IN_ALL
 GList *ide_template_provider_get_project_templates (IdeTemplateProvider *self);
 
 G_END_DECLS
diff --git a/src/libide/testing/ide-test-provider.h b/src/libide/testing/ide-test-provider.h
index 8650fc0..47eac49 100644
--- a/src/libide/testing/ide-test-provider.h
+++ b/src/libide/testing/ide-test-provider.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 #include "buildsystem/ide-build-pipeline.h"
@@ -54,20 +56,27 @@ struct _IdeTestProviderClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 gboolean ide_test_provider_get_loading (IdeTestProvider      *self);
+IDE_AVAILABLE_IN_ALL
 void     ide_test_provider_set_loading (IdeTestProvider      *self,
                                         gboolean              loading);
+IDE_AVAILABLE_IN_ALL
 void     ide_test_provider_clear       (IdeTestProvider      *self);
+IDE_AVAILABLE_IN_ALL
 void     ide_test_provider_add         (IdeTestProvider      *self,
                                         IdeTest              *test);
+IDE_AVAILABLE_IN_ALL
 void     ide_test_provider_remove      (IdeTestProvider      *self,
                                         IdeTest              *test);
+IDE_AVAILABLE_IN_ALL
 void     ide_test_provider_run_async   (IdeTestProvider      *self,
                                         IdeTest              *test,
                                         IdeBuildPipeline     *pipeline,
                                         GCancellable         *cancellable,
                                         GAsyncReadyCallback   callback,
                                         gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean ide_test_provider_run_finish  (IdeTestProvider      *self,
                                         GAsyncResult         *result,
                                         GError              **error);
diff --git a/src/libide/testing/ide-test.h b/src/libide/testing/ide-test.h
index 44b5d38..0fdf670 100644
--- a/src/libide/testing/ide-test.h
+++ b/src/libide/testing/ide-test.h
@@ -20,6 +20,8 @@
 
 #include <glib-object.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_TEST (ide_test_get_type())
@@ -49,18 +51,28 @@ struct _IdeTestClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeTest       *ide_test_new               (void);
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_test_get_display_name  (IdeTest       *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_test_set_display_name  (IdeTest       *self,
                                            const gchar   *display_name);
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_test_get_group         (IdeTest       *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_test_set_group         (IdeTest       *self,
                                            const gchar   *group);
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_test_get_icon_name     (IdeTest       *self);
+IDE_AVAILABLE_IN_ALL
 const gchar   *ide_test_get_id            (IdeTest       *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_test_set_id            (IdeTest       *self,
                                            const gchar   *id);
+IDE_AVAILABLE_IN_ALL
 IdeTestStatus  ide_test_get_status        (IdeTest       *self);
+IDE_AVAILABLE_IN_ALL
 void           ide_test_set_status        (IdeTest       *self,
                                            IdeTestStatus  status);
 
diff --git a/src/libide/threading/ide-thread-pool.h b/src/libide/threading/ide-thread-pool.h
index ea7ab29..92fac3f 100644
--- a/src/libide/threading/ide-thread-pool.h
+++ b/src/libide/threading/ide-thread-pool.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 typedef struct _IdeThreadPool IdeThreadPool;
@@ -39,9 +41,11 @@ typedef enum
 typedef void (*IdeThreadFunc) (gpointer user_data);
 
 void     _ide_thread_pool_init     (gboolean              is_worker) G_GNUC_INTERNAL;
+IDE_AVAILABLE_IN_ALL
 void     ide_thread_pool_push      (IdeThreadPoolKind     kind,
                                     IdeThreadFunc         func,
                                     gpointer              func_data);
+IDE_AVAILABLE_IN_ALL
 void     ide_thread_pool_push_task (IdeThreadPoolKind     kind,
                                     GTask                *task,
                                     GTaskThreadFunc       func);
diff --git a/src/libide/transfers/ide-pkcon-transfer.h b/src/libide/transfers/ide-pkcon-transfer.h
index 3de6403..1ced877 100644
--- a/src/libide/transfers/ide-pkcon-transfer.h
+++ b/src/libide/transfers/ide-pkcon-transfer.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "transfers/ide-transfer.h"
 
 G_BEGIN_DECLS
@@ -26,6 +28,7 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdePkconTransfer, ide_pkcon_transfer, IDE, PKCON_TRANSFER, IdeTransfer)
 
+IDE_AVAILABLE_IN_ALL
 IdePkconTransfer *ide_pkcon_transfer_new (const gchar * const *packages);
 
 G_END_DECLS
diff --git a/src/libide/transfers/ide-transfer-button.h b/src/libide/transfers/ide-transfer-button.h
index 00626db..eeb32e9 100644
--- a/src/libide/transfers/ide-transfer-button.h
+++ b/src/libide/transfers/ide-transfer-button.h
@@ -20,6 +20,8 @@
 
 #include <dazzle.h>
 
+#include "ide-version-macros.h"
+
 #include "transfers/ide-transfer.h"
 
 G_BEGIN_DECLS
@@ -39,6 +41,7 @@ struct _IdeTransferButtonClass
   gpointer _reserved4;
 };
 
+IDE_AVAILABLE_IN_ALL
 GtkWidget *ide_transfer_button_new (IdeTransfer *transfer);
 
 G_END_DECLS
diff --git a/src/libide/transfers/ide-transfer-manager.h b/src/libide/transfers/ide-transfer-manager.h
index 43d57ee..c838416 100644
--- a/src/libide/transfers/ide-transfer-manager.h
+++ b/src/libide/transfers/ide-transfer-manager.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 
 #include "transfers/ide-transfer.h"
@@ -28,15 +30,21 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (IdeTransferManager, ide_transfer_manager, IDE, TRANSFER_MANAGER, GObject)
 
+IDE_AVAILABLE_IN_ALL
 gdouble  ide_transfer_manager_get_progress   (IdeTransferManager   *self);
+IDE_AVAILABLE_IN_ALL
 gboolean ide_transfer_manager_get_has_active (IdeTransferManager   *self);
+IDE_AVAILABLE_IN_ALL
 void     ide_transfer_manager_cancel_all     (IdeTransferManager   *self);
+IDE_AVAILABLE_IN_ALL
 void     ide_transfer_manager_clear          (IdeTransferManager   *self);
+IDE_AVAILABLE_IN_ALL
 void     ide_transfer_manager_execute_async  (IdeTransferManager   *self,
                                               IdeTransfer          *transfer,
                                               GCancellable         *cancellable,
                                               GAsyncReadyCallback   callback,
                                               gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean ide_transfer_manager_execute_finish (IdeTransferManager   *self,
                                               GAsyncResult         *result,
                                               GError              **error);
diff --git a/src/libide/transfers/ide-transfer.h b/src/libide/transfers/ide-transfer.h
index 18aeea5..10ff7c1 100644
--- a/src/libide/transfers/ide-transfer.h
+++ b/src/libide/transfers/ide-transfer.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_TRANSFER  (ide_transfer_get_type())
@@ -56,26 +58,40 @@ typedef enum
   IDE_TRANSFER_ERROR_CONNECTION_IS_METERED = 1,
 } IdeTransferError;
 
+IDE_AVAILABLE_IN_ALL
 GQuark       ide_transfer_error_quark    (void);
+IDE_AVAILABLE_IN_ALL
 void         ide_transfer_cancel         (IdeTransfer          *self);
+IDE_AVAILABLE_IN_ALL
 gboolean     ide_transfer_get_completed  (IdeTransfer          *self);
+IDE_AVAILABLE_IN_ALL
 gboolean     ide_transfer_get_active     (IdeTransfer          *self);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_transfer_get_icon_name  (IdeTransfer          *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_transfer_set_icon_name  (IdeTransfer          *self,
                                           const gchar          *icon_name);
+IDE_AVAILABLE_IN_ALL
 gdouble      ide_transfer_get_progress   (IdeTransfer          *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_transfer_set_progress   (IdeTransfer          *self,
                                           gdouble               progress);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_transfer_get_status     (IdeTransfer          *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_transfer_set_status     (IdeTransfer          *self,
                                           const gchar          *status);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_transfer_get_title      (IdeTransfer          *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_transfer_set_title      (IdeTransfer          *self,
                                           const gchar          *title);
+IDE_AVAILABLE_IN_ALL
 void         ide_transfer_execute_async  (IdeTransfer          *self,
                                           GCancellable         *cancellable,
                                           GAsyncReadyCallback   callback,
                                           gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean     ide_transfer_execute_finish (IdeTransfer          *self,
                                           GAsyncResult         *result,
                                           GError              **error);
diff --git a/src/libide/util/ide-cell-renderer-fancy.h b/src/libide/util/ide-cell-renderer-fancy.h
index 4d4febc..1accdd3 100644
--- a/src/libide/util/ide-cell-renderer-fancy.h
+++ b/src/libide/util/ide-cell-renderer-fancy.h
@@ -20,17 +20,23 @@
 
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_CELL_RENDERER_FANCY (ide_cell_renderer_fancy_get_type())
 
 G_DECLARE_FINAL_TYPE (IdeCellRendererFancy, ide_cell_renderer_fancy, IDE, CELL_RENDERER_FANCY, 
GtkCellRenderer)
 
+IDE_AVAILABLE_IN_ALL
 GtkCellRenderer *ide_cell_renderer_fancy_new        (void);
+IDE_AVAILABLE_IN_ALL
 void             ide_cell_renderer_fancy_take_title (IdeCellRendererFancy *self,
                                                      gchar                *title);
+IDE_AVAILABLE_IN_ALL
 void             ide_cell_renderer_fancy_set_title  (IdeCellRendererFancy *self,
                                                      const gchar          *title);
+IDE_AVAILABLE_IN_ALL
 void             ide_cell_renderer_fancy_set_body   (IdeCellRendererFancy *self,
                                                      const gchar          *body);
 
diff --git a/src/libide/util/ide-fancy-tree-view.h b/src/libide/util/ide-fancy-tree-view.h
index 2b80f57..4e4b654 100644
--- a/src/libide/util/ide-fancy-tree-view.h
+++ b/src/libide/util/ide-fancy-tree-view.h
@@ -20,6 +20,8 @@
 
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_FANCY_TREE_VIEW (ide_fancy_tree_view_get_type())
@@ -37,7 +39,9 @@ struct _IdeFancyTreeViewClass
   gpointer _reserved4;
 };
 
+IDE_AVAILABLE_IN_ALL
 GtkWidget *ide_fancy_tree_view_new           (void);
+IDE_AVAILABLE_IN_ALL
 void       ide_fancy_tree_view_set_data_func (IdeFancyTreeView      *self,
                                               GtkCellLayoutDataFunc  func,
                                               gpointer               func_data,
diff --git a/src/libide/util/ide-flatpak.h b/src/libide/util/ide-flatpak.h
index ed3adb3..3cd2d0c 100644
--- a/src/libide/util/ide-flatpak.h
+++ b/src/libide/util/ide-flatpak.h
@@ -20,9 +20,13 @@
 
 #include <glib.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
+IDE_AVAILABLE_IN_ALL
 gboolean  ide_is_flatpak           (void);
+IDE_AVAILABLE_IN_ALL
 gchar    *ide_flatpak_get_app_path (const gchar *path);
 
 G_END_DECLS
diff --git a/src/libide/util/ide-gtk.h b/src/libide/util/ide-gtk.h
index ec60959..d26e030 100644
--- a/src/libide/util/ide-gtk.h
+++ b/src/libide/util/ide-gtk.h
@@ -20,6 +20,8 @@
 
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-context.h"
 
 #include "workbench/ide-workbench.h"
@@ -29,9 +31,12 @@ G_BEGIN_DECLS
 typedef void (*IdeWidgetContextHandler) (GtkWidget  *widget,
                                          IdeContext *context);
 
+IDE_AVAILABLE_IN_ALL
 void          ide_widget_set_context_handler (gpointer                 widget,
                                               IdeWidgetContextHandler  handler);
+IDE_AVAILABLE_IN_ALL
 IdeContext   *ide_widget_get_context         (GtkWidget               *widget);
+IDE_AVAILABLE_IN_ALL
 IdeWorkbench *ide_widget_get_workbench       (GtkWidget               *widget);
 
 G_END_DECLS
diff --git a/src/libide/util/ide-line-reader.h b/src/libide/util/ide-line-reader.h
index bb63ffd..410156f 100644
--- a/src/libide/util/ide-line-reader.h
+++ b/src/libide/util/ide-line-reader.h
@@ -20,6 +20,8 @@
 
 #include <glib.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 typedef struct
@@ -29,9 +31,11 @@ typedef struct
   gssize  pos;
 } IdeLineReader;
 
+IDE_AVAILABLE_IN_ALL
 void   ide_line_reader_init (IdeLineReader *reader,
                              gchar         *contents,
                              gssize         length);
+IDE_AVAILABLE_IN_ALL
 gchar *ide_line_reader_next (IdeLineReader *reader,
                              gsize         *length);
 
diff --git a/src/libide/util/ide-posix.h b/src/libide/util/ide-posix.h
index d141f40..87c58f8 100644
--- a/src/libide/util/ide-posix.h
+++ b/src/libide/util/ide-posix.h
@@ -20,12 +20,19 @@
 
 #include <glib.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
+IDE_AVAILABLE_IN_ALL
 gchar       *ide_get_system_arch      (void);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_get_system_type      (void);
+IDE_AVAILABLE_IN_ALL
 gsize        ide_get_system_page_size (void) G_GNUC_CONST;
+IDE_AVAILABLE_IN_ALL
 gchar       *ide_path_collapse        (const gchar *path);
+IDE_AVAILABLE_IN_ALL
 gchar       *ide_path_expand          (const gchar *path);
 
 G_END_DECLS
diff --git a/src/libide/util/ide-progress.h b/src/libide/util/ide-progress.h
index c3c5f31..1b4510b 100644
--- a/src/libide/util/ide-progress.h
+++ b/src/libide/util/ide-progress.h
@@ -20,23 +20,32 @@
 
 #include <glib-object.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_PROGRESS (ide_progress_get_type())
 
 G_DECLARE_FINAL_TYPE (IdeProgress, ide_progress, IDE, PROGRESS, GObject)
 
+IDE_AVAILABLE_IN_ALL
 IdeProgress *ide_progress_new                       (void);
+IDE_AVAILABLE_IN_ALL
 gdouble      ide_progress_get_fraction              (IdeProgress *self);
+IDE_AVAILABLE_IN_ALL
 gchar       *ide_progress_get_message               (IdeProgress *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_progress_set_fraction              (IdeProgress *self,
                                                      gdouble      fraction);
+IDE_AVAILABLE_IN_ALL
 void         ide_progress_set_message               (IdeProgress *self,
                                                      const gchar *message);
+IDE_AVAILABLE_IN_ALL
 void         ide_progress_flatpak_progress_callback (const char  *status,
                                                      guint        progress,
                                                      gboolean     estimating,
                                                      gpointer     user_data);
+IDE_AVAILABLE_IN_ALL
 void         ide_progress_file_progress_callback    (goffset      current_num_bytes,
                                                      goffset      total_num_bytes,
                                                      gpointer     user_data);
diff --git a/src/libide/util/ide-ref-ptr.h b/src/libide/util/ide-ref-ptr.h
index 81f86ea..5764a5a 100644
--- a/src/libide/util/ide-ref-ptr.h
+++ b/src/libide/util/ide-ref-ptr.h
@@ -20,17 +20,24 @@
 
 #include <glib-object.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_REF_PTR (ide_ref_ptr_get_type())
 
 typedef struct _IdeRefPtr IdeRefPtr;
 
+IDE_AVAILABLE_IN_ALL
 GType      ide_ref_ptr_get_type (void);
+IDE_AVAILABLE_IN_ALL
 IdeRefPtr *ide_ref_ptr_new      (gpointer        data,
                                  GDestroyNotify  free_func);
+IDE_AVAILABLE_IN_ALL
 IdeRefPtr *ide_ref_ptr_ref      (IdeRefPtr      *self);
+IDE_AVAILABLE_IN_ALL
 void       ide_ref_ptr_unref    (IdeRefPtr      *self);
+IDE_AVAILABLE_IN_ALL
 gpointer   ide_ref_ptr_get      (IdeRefPtr      *self);
 
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (IdeRefPtr, ide_ref_ptr_unref)
diff --git a/src/libide/util/ide-uri.h b/src/libide/util/ide-uri.h
index 33ebf13..47507a7 100644
--- a/src/libide/util/ide-uri.h
+++ b/src/libide/util/ide-uri.h
@@ -23,6 +23,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 typedef struct _IdeUri IdeUri;
@@ -39,13 +41,16 @@ typedef enum
   IDE_URI_PARSE_UTF8_ONLY   = 1 << 7
 } IdeUriParseFlags;
 
+IDE_AVAILABLE_IN_ALL
 IdeUri *       ide_uri_new           (const gchar        *uri_string,
                                       IdeUriParseFlags    flags,
                                       GError            **error);
+IDE_AVAILABLE_IN_ALL
 IdeUri *       ide_uri_new_relative  (IdeUri             *base_uri,
                                       const gchar        *uri_string,
                                       IdeUriParseFlags    flags,
                                       GError            **error);
+IDE_AVAILABLE_IN_ALL
 IdeUri *       ide_uri_new_from_file (GFile              *file);
 
 typedef enum
@@ -56,52 +61,76 @@ typedef enum
 
 #define IDE_TYPE_URI (ide_uri_get_type())
 
+IDE_AVAILABLE_IN_ALL
 GType        ide_uri_get_type        (void);
 
+IDE_AVAILABLE_IN_ALL
 char *       ide_uri_to_string       (IdeUri               *uri,
                                       IdeUriToStringFlags   flags);
 
+IDE_AVAILABLE_IN_ALL
 IdeUri *     ide_uri_copy            (IdeUri               *uri);
+IDE_AVAILABLE_IN_ALL
 IdeUri *     ide_uri_ref             (IdeUri               *uri);
+IDE_AVAILABLE_IN_ALL
 void         ide_uri_unref           (IdeUri               *uri);
 
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_uri_get_scheme      (IdeUri               *uri);
+IDE_AVAILABLE_IN_ALL
 void         ide_uri_set_scheme      (IdeUri               *uri,
                                       const gchar        *scheme);
 
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_uri_get_user        (IdeUri               *uri);
+IDE_AVAILABLE_IN_ALL
 void         ide_uri_set_user        (IdeUri               *uri,
                                       const gchar        *user);
 
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_uri_get_password    (IdeUri               *uri);
+IDE_AVAILABLE_IN_ALL
 void         ide_uri_set_password    (IdeUri               *uri,
                                       const gchar        *password);
 
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_uri_get_auth_params (IdeUri               *uri);
+IDE_AVAILABLE_IN_ALL
 void         ide_uri_set_auth_params (IdeUri               *uri,
                                       const gchar        *auth_params);
 
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_uri_get_host        (IdeUri               *uri);
+IDE_AVAILABLE_IN_ALL
 void         ide_uri_set_host        (IdeUri               *uri,
                                       const gchar        *host);
 
+IDE_AVAILABLE_IN_ALL
 gushort      ide_uri_get_port        (IdeUri               *uri);
+IDE_AVAILABLE_IN_ALL
 void         ide_uri_set_port        (IdeUri               *uri,
                                       gushort             port);
 
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_uri_get_path        (IdeUri               *uri);
+IDE_AVAILABLE_IN_ALL
 void         ide_uri_set_path        (IdeUri               *uri,
                                       const gchar        *path);
 
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_uri_get_query       (IdeUri               *uri);
+IDE_AVAILABLE_IN_ALL
 void         ide_uri_set_query       (IdeUri               *uri,
                                       const gchar        *query);
 
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_uri_get_fragment    (IdeUri               *uri);
+IDE_AVAILABLE_IN_ALL
 void         ide_uri_set_fragment    (IdeUri               *uri,
                                       const gchar        *fragment);
 
 
+IDE_AVAILABLE_IN_ALL
 void         ide_uri_split           (const gchar        *uri_string,
                                       gboolean            strict,
                                       gchar             **scheme,
@@ -111,10 +140,12 @@ void         ide_uri_split           (const gchar        *uri_string,
                                       gchar             **path,
                                       gchar             **query,
                                       gchar             **fragment);
+IDE_AVAILABLE_IN_ALL
 GHashTable * ide_uri_parse_params    (const gchar        *params,
                                       gssize              length,
                                       gchar               separator,
                                       gboolean            case_insensitive);
+IDE_AVAILABLE_IN_ALL
 gboolean     ide_uri_parse_host      (const gchar        *uri_string,
                                       IdeUriParseFlags    flags,
                                       gchar             **scheme,
@@ -122,6 +153,7 @@ gboolean     ide_uri_parse_host      (const gchar        *uri_string,
                                       gushort            *port,
                                       GError            **error);
 
+IDE_AVAILABLE_IN_ALL
 gchar *      ide_uri_build           (const gchar        *scheme,
                                       const gchar        *userinfo,
                                       const gchar        *host,
@@ -130,9 +162,11 @@ gchar *      ide_uri_build           (const gchar        *scheme,
                                       const gchar        *query,
                                       const gchar        *fragment);
 
+IDE_AVAILABLE_IN_ALL
 gboolean     ide_uri_is_file         (IdeUri             *uri,
                                       GFile              *file);
 
+IDE_AVAILABLE_IN_ALL
 GFile       *ide_uri_to_file         (IdeUri             *uri);
 
 
@@ -165,6 +199,7 @@ typedef enum
   IDE_URI_ERROR_BAD_FRAGMENT
 } IdeUriError;
 
+IDE_AVAILABLE_IN_ALL
 GQuark ide_uri_error_quark (void);
 
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (IdeUri, ide_uri_unref)
diff --git a/src/libide/vcs/ide-vcs-config.h b/src/libide/vcs/ide-vcs-config.h
index e676f1d..493dde4 100644
--- a/src/libide/vcs/ide-vcs-config.h
+++ b/src/libide/vcs/ide-vcs-config.h
@@ -20,6 +20,8 @@
 
 #include <glib-object.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_VCS_CONFIG (ide_vcs_config_get_type())
@@ -44,9 +46,11 @@ struct _IdeVcsConfigInterface
                       const GValue    *value);
 };
 
+IDE_AVAILABLE_IN_ALL
 void ide_vcs_config_get_config (IdeVcsConfig     *self,
                                 IdeVcsConfigType  type,
                                 GValue           *value);
+IDE_AVAILABLE_IN_ALL
 void ide_vcs_config_set_config (IdeVcsConfig     *self,
                                 IdeVcsConfigType  type,
                                 const GValue     *value);
diff --git a/src/libide/vcs/ide-vcs-initializer.h b/src/libide/vcs/ide-vcs-initializer.h
index 930008d..3b0db76 100644
--- a/src/libide/vcs/ide-vcs-initializer.h
+++ b/src/libide/vcs/ide-vcs-initializer.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_VCS_INITIALIZER (ide_vcs_initializer_get_type ())
@@ -41,12 +43,15 @@ struct _IdeVcsInitializerInterface
                                  GError              **error);
 };
 
+IDE_AVAILABLE_IN_ALL
 gchar   *ide_vcs_initializer_get_title         (IdeVcsInitializer    *self);
+IDE_AVAILABLE_IN_ALL
 void     ide_vcs_initializer_initialize_async  (IdeVcsInitializer    *self,
                                                 GFile                *file,
                                                 GCancellable         *cancellable,
                                                 GAsyncReadyCallback   callback,
                                                 gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean ide_vcs_initializer_initialize_finish (IdeVcsInitializer    *self,
                                                 GAsyncResult         *result,
                                                 GError              **error);
diff --git a/src/libide/vcs/ide-vcs-uri.h b/src/libide/vcs/ide-vcs-uri.h
index ff5bad2..b93511b 100644
--- a/src/libide/vcs/ide-vcs-uri.h
+++ b/src/libide/vcs/ide-vcs-uri.h
@@ -20,32 +20,50 @@
 
 #include <glib-object.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_VCS_URI (ide_vcs_uri_get_type())
 
 typedef struct _IdeVcsUri IdeVcsUri;
 
+IDE_AVAILABLE_IN_ALL
 GType        ide_vcs_uri_get_type   (void);
+IDE_AVAILABLE_IN_ALL
 IdeVcsUri   *ide_vcs_uri_new        (const gchar     *uri);
+IDE_AVAILABLE_IN_ALL
 IdeVcsUri   *ide_vcs_uri_ref        (IdeVcsUri       *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_vcs_uri_unref      (IdeVcsUri       *self);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_vcs_uri_get_scheme (const IdeVcsUri *self);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_vcs_uri_get_user   (const IdeVcsUri *self);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_vcs_uri_get_host   (const IdeVcsUri *self);
+IDE_AVAILABLE_IN_ALL
 guint        ide_vcs_uri_get_port   (const IdeVcsUri *self);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_vcs_uri_get_path   (const IdeVcsUri *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_vcs_uri_set_scheme (IdeVcsUri       *self,
                                      const gchar     *scheme);
+IDE_AVAILABLE_IN_ALL
 void         ide_vcs_uri_set_user   (IdeVcsUri       *self,
                                      const gchar     *user);
+IDE_AVAILABLE_IN_ALL
 void         ide_vcs_uri_set_host   (IdeVcsUri       *self,
                                      const gchar     *host);
+IDE_AVAILABLE_IN_ALL
 void         ide_vcs_uri_set_port   (IdeVcsUri       *self,
                                      guint            port);
+IDE_AVAILABLE_IN_ALL
 void         ide_vcs_uri_set_path   (IdeVcsUri       *self,
                                      const gchar     *path);
+IDE_AVAILABLE_IN_ALL
 gchar       *ide_vcs_uri_to_string  (const IdeVcsUri *self);
+IDE_AVAILABLE_IN_ALL
 gboolean     ide_vcs_uri_is_valid   (const gchar     *uri_string);
 
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (IdeVcsUri, ide_vcs_uri_unref)
diff --git a/src/libide/vcs/ide-vcs.h b/src/libide/vcs/ide-vcs.h
index b8d61d9..71af20f 100644
--- a/src/libide/vcs/ide-vcs.h
+++ b/src/libide/vcs/ide-vcs.h
@@ -20,6 +20,8 @@
 
 #include <gio/gio.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-object.h"
 #include "vcs/ide-vcs-config.h"
 
@@ -45,26 +47,37 @@ struct _IdeVcsInterface
   gchar                  *(*get_branch_name)           (IdeVcs     *self);
 };
 
+IDE_AVAILABLE_IN_ALL
 void                    ide_vcs_register_ignored          (const gchar          *pattern);
+IDE_AVAILABLE_IN_ALL
 IdeBufferChangeMonitor *ide_vcs_get_buffer_change_monitor (IdeVcs               *self,
                                                            IdeBuffer            *buffer);
+IDE_AVAILABLE_IN_ALL
 GFile                  *ide_vcs_get_working_directory     (IdeVcs               *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_vcs_new_async                 (IdeContext           *context,
                                                            int                   io_priority,
                                                            GCancellable         *cancellable,
                                                            GAsyncReadyCallback   callback,
                                                            gpointer              user_data);
+IDE_AVAILABLE_IN_ALL
 IdeVcs                 *ide_vcs_new_finish                (GAsyncResult         *result,
                                                            GError              **error);
+IDE_AVAILABLE_IN_ALL
 gboolean                ide_vcs_is_ignored                (IdeVcs               *self,
                                                            GFile                *file,
                                                            GError              **error);
+IDE_AVAILABLE_IN_ALL
 gboolean                ide_vcs_path_is_ignored           (IdeVcs               *self,
                                                            const gchar          *path,
                                                            GError              **error);
+IDE_AVAILABLE_IN_ALL
 gint                    ide_vcs_get_priority              (IdeVcs               *self);
+IDE_AVAILABLE_IN_ALL
 void                    ide_vcs_emit_changed              (IdeVcs               *self);
+IDE_AVAILABLE_IN_ALL
 IdeVcsConfig           *ide_vcs_get_config                (IdeVcs               *self);
+IDE_AVAILABLE_IN_ALL
 gchar                  *ide_vcs_get_branch_name           (IdeVcs               *self);
 
 G_END_DECLS
diff --git a/src/libide/workbench/ide-perspective.h b/src/libide/workbench/ide-perspective.h
index 7b87975..4a9e0a1 100644
--- a/src/libide/workbench/ide-perspective.h
+++ b/src/libide/workbench/ide-perspective.h
@@ -20,6 +20,8 @@
 
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_PERSPECTIVE (ide_perspective_get_type())
@@ -46,19 +48,30 @@ struct _IdePerspectiveInterface
   void          (*restore_state)       (IdePerspective *self);
 };
 
+IDE_AVAILABLE_IN_ALL
 gboolean      ide_perspective_agree_to_shutdown   (IdePerspective *self);
+IDE_AVAILABLE_IN_ALL
 gchar        *ide_perspective_get_icon_name       (IdePerspective *self);
+IDE_AVAILABLE_IN_ALL
 gchar        *ide_perspective_get_id              (IdePerspective *self);
+IDE_AVAILABLE_IN_ALL
 gboolean      ide_perspective_get_needs_attention (IdePerspective *self);
+IDE_AVAILABLE_IN_ALL
 gchar        *ide_perspective_get_title           (IdePerspective *self);
+IDE_AVAILABLE_IN_ALL
 GtkWidget    *ide_perspective_get_titlebar        (IdePerspective *self);
+IDE_AVAILABLE_IN_ALL
 gboolean      ide_perspective_is_early            (IdePerspective *self);
+IDE_AVAILABLE_IN_ALL
 void          ide_perspective_set_fullscreen      (IdePerspective *self,
                                                    gboolean        fullscreen);
+IDE_AVAILABLE_IN_ALL
 void          ide_perspective_views_foreach       (IdePerspective *self,
                                                    GtkCallback     callback,
                                                    gpointer        user_data);
+IDE_AVAILABLE_IN_ALL
 gchar        *ide_perspective_get_accelerator     (IdePerspective *self);
+IDE_AVAILABLE_IN_ALL
 void          ide_perspective_restore_state       (IdePerspective *self);
 
 G_END_DECLS
diff --git a/src/libide/workbench/ide-workbench-addin.h b/src/libide/workbench/ide-workbench-addin.h
index f83aef2..81c1d1c 100644
--- a/src/libide/workbench/ide-workbench-addin.h
+++ b/src/libide/workbench/ide-workbench-addin.h
@@ -18,6 +18,8 @@
 
 #pragma once
 
+#include "ide-version-macros.h"
+
 #include "util/ide-uri.h"
 #include "workbench/ide-perspective.h"
 #include "workbench/ide-workbench.h"
@@ -55,18 +57,24 @@ struct _IdeWorkbenchAddinInterface
                                 IdePerspective         *perspective);
 };
 
+IDE_AVAILABLE_IN_ALL
 IdeWorkbenchAddin *ide_workbench_addin_find_by_module_name (IdeWorkbench *workbench,
                                                             const gchar  *addin_name);
 
+IDE_AVAILABLE_IN_ALL
 gchar    *ide_workbench_addin_get_id          (IdeWorkbenchAddin      *self);
+IDE_AVAILABLE_IN_ALL
 void      ide_workbench_addin_load            (IdeWorkbenchAddin      *self,
                                                IdeWorkbench           *workbench);
+IDE_AVAILABLE_IN_ALL
 void      ide_workbench_addin_unload          (IdeWorkbenchAddin      *self,
                                                IdeWorkbench           *workbench);
+IDE_AVAILABLE_IN_ALL
 gboolean  ide_workbench_addin_can_open        (IdeWorkbenchAddin      *self,
                                                IdeUri                 *uri,
                                                const gchar            *content_type,
                                                gint                   *priority);
+IDE_AVAILABLE_IN_ALL
 void      ide_workbench_addin_open_async      (IdeWorkbenchAddin      *self,
                                                IdeUri                 *uri,
                                                const gchar            *content_type,
@@ -74,9 +82,11 @@ void      ide_workbench_addin_open_async      (IdeWorkbenchAddin      *self,
                                                GCancellable           *cancellable,
                                                GAsyncReadyCallback     callback,
                                                gpointer                user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean  ide_workbench_addin_open_finish     (IdeWorkbenchAddin      *self,
                                                GAsyncResult           *result,
                                                GError                **error);
+IDE_AVAILABLE_IN_ALL
 void      ide_workbench_addin_perspective_set (IdeWorkbenchAddin      *self,
                                                IdePerspective         *perspective);
 
diff --git a/src/libide/workbench/ide-workbench-header-bar.h b/src/libide/workbench/ide-workbench-header-bar.h
index bc17efc..2d60d5b 100644
--- a/src/libide/workbench/ide-workbench-header-bar.h
+++ b/src/libide/workbench/ide-workbench-header-bar.h
@@ -20,6 +20,8 @@
 
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 #include "workbench/ide-omni-bar.h"
 
 G_BEGIN_DECLS
@@ -43,15 +45,21 @@ struct _IdeWorkbenchHeaderBarClass
   gpointer _reserved8;
 };
 
+IDE_AVAILABLE_IN_ALL
 GtkWidget  *ide_workbench_header_bar_new          (void);
+IDE_AVAILABLE_IN_ALL
 IdeOmniBar *ide_workbench_header_bar_get_omni_bar (IdeWorkbenchHeaderBar *self);
+IDE_AVAILABLE_IN_ALL
 void        ide_workbench_header_bar_focus_search (IdeWorkbenchHeaderBar *self);
+IDE_AVAILABLE_IN_ALL
 void        ide_workbench_header_bar_add_primary  (IdeWorkbenchHeaderBar *self,
                                                    GtkWidget             *widget);
+IDE_AVAILABLE_IN_ALL
 void        ide_workbench_header_bar_insert_left  (IdeWorkbenchHeaderBar *self,
                                                    GtkWidget             *widget,
                                                    GtkPackType            pack_type,
                                                    gint                   priority);
+IDE_AVAILABLE_IN_ALL
 void        ide_workbench_header_bar_insert_right (IdeWorkbenchHeaderBar *self,
                                                    GtkWidget             *widget,
                                                    GtkPackType            pack_type,
diff --git a/src/libide/workbench/ide-workbench-message.h b/src/libide/workbench/ide-workbench-message.h
index b21d348..4a3f7bc 100644
--- a/src/libide/workbench/ide-workbench-message.h
+++ b/src/libide/workbench/ide-workbench-message.h
@@ -20,22 +20,32 @@
 
 #include <gtk/gtk.h>
 
+#include "ide-version-macros.h"
+
 G_BEGIN_DECLS
 
 #define IDE_TYPE_WORKBENCH_MESSAGE (ide_workbench_message_get_type())
 
 G_DECLARE_FINAL_TYPE (IdeWorkbenchMessage, ide_workbench_message, IDE, WORKBENCH_MESSAGE, GtkInfoBar)
 
+IDE_AVAILABLE_IN_ALL
 GtkWidget   *ide_workbench_message_new          (void);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_workbench_message_get_id       (IdeWorkbenchMessage *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_workbench_message_set_id       (IdeWorkbenchMessage *self,
                                                  const gchar         *id);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_workbench_message_get_title    (IdeWorkbenchMessage *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_workbench_message_set_title    (IdeWorkbenchMessage *self,
                                                  const gchar         *title);
+IDE_AVAILABLE_IN_ALL
 const gchar *ide_workbench_message_get_subtitle (IdeWorkbenchMessage *self);
+IDE_AVAILABLE_IN_ALL
 void         ide_workbench_message_set_subtitle (IdeWorkbenchMessage *self,
                                                  const gchar         *subtitle);
+IDE_AVAILABLE_IN_ALL
 void         ide_workbench_message_add_action   (IdeWorkbenchMessage *self,
                                                  const gchar         *label,
                                                  const gchar         *action_name);
diff --git a/src/libide/workbench/ide-workbench.h b/src/libide/workbench/ide-workbench.h
index d83c42e..89ac153 100644
--- a/src/libide/workbench/ide-workbench.h
+++ b/src/libide/workbench/ide-workbench.h
@@ -20,6 +20,8 @@
 
 #include <dazzle.h>
 
+#include "ide-version-macros.h"
+
 #include "ide-context.h"
 
 #include "util/ide-uri.h"
@@ -55,14 +57,17 @@ typedef enum
 
 G_DECLARE_FINAL_TYPE (IdeWorkbench, ide_workbench, IDE, WORKBENCH, DzlApplicationWindow)
 
+IDE_AVAILABLE_IN_ALL
 void                   ide_workbench_open_project_async           (IdeWorkbench           *self,
                                                                    GFile                  *file_or_directory,
                                                                    GCancellable           *cancellable,
                                                                    GAsyncReadyCallback     callback,
                                                                    gpointer                user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_workbench_open_project_finish          (IdeWorkbench           *self,
                                                                    GAsyncResult           *result,
                                                                    GError                **error);
+IDE_AVAILABLE_IN_ALL
 void                   ide_workbench_open_uri_async               (IdeWorkbench           *self,
                                                                    IdeUri                 *uri,
                                                                    const gchar            *hint,
@@ -70,9 +75,11 @@ void                   ide_workbench_open_uri_async               (IdeWorkbench
                                                                    GCancellable           *cancellable,
                                                                    GAsyncReadyCallback     callback,
                                                                    gpointer                user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_workbench_open_uri_finish              (IdeWorkbench           *self,
                                                                    GAsyncResult           *result,
                                                                    GError                **error);
+IDE_AVAILABLE_IN_ALL
 void                   ide_workbench_open_files_async             (IdeWorkbench           *self,
                                                                    GFile                 **files,
                                                                    guint                   n_files,
@@ -81,41 +88,60 @@ void                   ide_workbench_open_files_async             (IdeWorkbench
                                                                    GCancellable           *cancellable,
                                                                    GAsyncReadyCallback     callback,
                                                                    gpointer                user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_workbench_open_files_finish            (IdeWorkbench           *self,
                                                                    GAsyncResult           *result,
                                                                    GError                **error);
+IDE_AVAILABLE_IN_ALL
 void                   ide_workbench_save_all_async               (IdeWorkbench           *self,
                                                                    GCancellable           *cancellable,
                                                                    GAsyncReadyCallback     callback,
                                                                    gpointer                user_data);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_workbench_save_all_finish              (IdeWorkbench           *self,
                                                                    GAsyncResult           *result,
                                                                    GError                **error);
+IDE_AVAILABLE_IN_ALL
 void                   ide_workbench_focus                        (IdeWorkbench           *self,
                                                                    GtkWidget              *widget);
+IDE_AVAILABLE_IN_ALL
 void                   ide_workbench_close                        (IdeWorkbench           *self);
+IDE_AVAILABLE_IN_ALL
 IdeContext            *ide_workbench_get_context                  (IdeWorkbench           *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_workbench_add_perspective              (IdeWorkbench           *self,
                                                                    IdePerspective         *perspective);
+IDE_AVAILABLE_IN_ALL
 void                   ide_workbench_remove_perspective           (IdeWorkbench           *self,
                                                                    IdePerspective         *perspective);
+IDE_AVAILABLE_IN_ALL
 IdePerspective        *ide_workbench_get_perspective_by_name      (IdeWorkbench           *self,
                                                                    const gchar            *name);
+IDE_AVAILABLE_IN_ALL
 IdePerspective        *ide_workbench_get_visible_perspective      (IdeWorkbench           *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_workbench_set_visible_perspective      (IdeWorkbench           *self,
                                                                    IdePerspective         *perspective);
+IDE_AVAILABLE_IN_ALL
 const gchar           *ide_workbench_get_visible_perspective_name (IdeWorkbench           *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_workbench_set_visible_perspective_name (IdeWorkbench           *self,
                                                                    const gchar            *name);
+IDE_AVAILABLE_IN_ALL
 void                   ide_workbench_views_foreach                (IdeWorkbench           *self,
                                                                    GtkCallback             callback,
                                                                    gpointer                user_data);
+IDE_AVAILABLE_IN_ALL
 IdeWorkbenchHeaderBar *ide_workbench_get_headerbar                (IdeWorkbench           *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_workbench_push_message                 (IdeWorkbench           *self,
                                                                    IdeWorkbenchMessage    *message);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_workbench_pop_message                  (IdeWorkbench           *self,
                                                                    const gchar            *message_id);
+IDE_AVAILABLE_IN_ALL
 gboolean               ide_workbench_get_focus_mode               (IdeWorkbench           *self);
+IDE_AVAILABLE_IN_ALL
 void                   ide_workbench_set_focus_mode               (IdeWorkbench           *self,
                                                                    gboolean                focus_mode);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]