LINUX.ORG.RU

Интроспекция в системе типов GObject

 , , , ,


0

0

GNOME Project представляет поддержку интроспекции для системы GObject.

Интроспекция (англ. Introspection) - возможность определения типов и получения описаний (метаданных) типов и интерфейсов во время выполнения программы. Задачей проекта GObject Introspection, по словам авторов, является попытка собрать метаданные по всему стеку библиотек GTK+/GNOME (и не только), оформить их в универсальном, машинно-читаемом формате, и предоставить соответствующее API.

Возможные варианты использования GObject Introspection:

  • привязки к языкам (language bindings). На данный момент, как правило, для различных языков используются свои методы описания API, что зачастую приводит к дублированию информации. Проект GObject Introspection должен представить унифицированный интерфейс для получения информации об API;
  • верификация API. Нередко случаются критические изменения публичного API (в результате, например, непредусмотрительности разработчика-новичка), которые могут "сломать" некоторые программы. GObject Introspection позволит автоматизировать сравнение двух версий API и выявить изменения с предельной точностью;
  • инструменты документирования. В рамках самого проекта GObject Introspection уже используется инструмент для автоматического документирования публичных API, которым в дальнейшем планируется заменить gtk-doc в рамках всего проекта GNOME;
  • автогенерация пользовательского интерфейса (наподобие того, как сделано в системе аудиосинтеза Beast);
  • дизайнер пользовательского интерфейса;
  • сериализация, RPC (в том числе средствами DBus), компонентная система.
На данный момент GObject Introspection представляет собой:
  • схему (формат) XML для представления метаданных, называемую GIR (GObject Introspection Repository);
  • модуль на языке Python для манипуляции форматом GIR;
  • генератор GIR из файлов исходных текстов на С (.c + .h);
  • систему typelib, схожую с XPCOM/MSOLE, для сохранения метаданных в бинарном формате;
  • конвертер между GIR (XML) и typelib (бинарный формат);
  • C-библиотеку для чтения typelib.
Исходные тексты GObject Introspection доступны в Subversion-репозитории проекта GNOME в соответствующем модуле (см. "Подробности").

Проект GObject Introspection активнейшим образом используется в языке Vala.

>>> Подробности

anonymous

Проверено: Shaman007 ()
Ответ на: комментарий от anonymous

> В Java-то это давно есть...

В более правильных языках оно было за много лет до появления Джавы.

mv ★★★★★
()
Ответ на: комментарий от mv

> В более правильных языках оно было за много лет до появления Джавы.

%username%, соль в том, что Гномеры тоже способны дойти до этого. И пусть не за 10 лет, но за 20!

anonymous
()
Ответ на: комментарий от anonymous

Чем бы дитя не тешилось - лишь бы не вешалось. Гномеры показывают всему миру кишки gcc вытащенные в отдельную либу. Ура!

anonymous
()
Ответ на: комментарий от mv

> В более правильных языках оно было за много лет до появления Джавы.

Только на этих правильных языках нельзя написать платформенную библиотеку, которую можно будет использовать из кучи других языков без особых костылей.

vgudkov
()
Ответ на: комментарий от vgudkov

> Только на этих правильных языках нельзя написать платформенную библиотеку, которую можно будет использовать из кучи других языков без особых костылей.

А как же gcj?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.