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 ()

> систему typelib, схожую с XPCOM/MSOLE
> схожую с XPCOM/MSOLE

> с XPCOM/MSOLE

> MSOLE


Just as planned.

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

> пихнем еще больше xml в систему!

пихнем еще больше С в ядро Linux!
пихнем еще больше нефтепродуктов в бензин!
пихнем еще больше пшеницы в хлеб!

anonymous
()

Ой какими технологиями Гноме трясёт. А встроенный композитинг то уже осилили ?

anonymous
()

а разве в QT x.x этого нет? что только люди не делают чтобы не работать...

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

> челы, а я чее-то не вкурил, а че это воообще ?

*шепотом* ко-сты-ли.

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

>Разъясните кто-нибудь, а программисту на Си это что-то даёт?

Отсутсвие встроенного композитинга.

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

>Разъясните кто-нибудь, а программисту на Си это что-то даёт?

*шепотом* ко-сты-ли.

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

Прошу админов забанить ананимуса ратующего за гном и поливающего помоями адекватных людей. Читать противно.

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

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

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

А у меня композитинг в Metacity работает (Gnome 2.22). Что я делаю не так?

gconftool-2 --set --type=bool /apps/metacity/general/compositing_manager true

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

>gconftool-2 --set --type=bool /apps/metacity/general/compositing_manager true

А вот не надо нам gconftool. Это по тому что они его "turned off by default" в версии 2.22. Просто не осилили ребятишки из Гнома протестить как полагается вот и вырубили по умолчанию, а вдруг у кого заработает и чудненько.

anonymous
()

Гномеры идут верной дорогой про созданию джава-подобной обёртки для Си. В Java-то это давно есть...

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

> Разъясните кто-нибудь, а программисту на Си это что-то даёт?

"Прямую" сериализацию/десериализацию. Автоматическая проверка api тоже многого стоит.

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

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

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

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

> А вот не надо нам gconftool. Это по тому что они его "turned off by default" в версии 2.22. Просто не осилили ребятишки из Гнома протестить как полагается вот и вырубили по умолчанию, а вдруг у кого заработает и чудненько.

На сколько я понимаю, KDE4 тоже не особо тестируют.

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

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

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

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

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

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

>А встроенный композитинг то уже осилили ?

Вы хотите встроенный композитинг в GObject? Может вам еще и "переключалку раскладки" прямо в QWidget?

:)))

petrosha ★★★★★
()

Требую метку [программирование]

anonymous
()

Воплощается мечта Мигеля о реесте в Гноме, он еще gtk+ на mono перепишет, и все это можно будет бысто закапывать пока Балмер в суд не побежал.

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

Пора выпускать реестр фобий анонимусов в проекте Gnome :)

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

>На сколько я понимаю, KDE4 тоже не особо тестируют.

Ну так такое оно и есть. Его ни то что не тестируют, а наверное даже в глаза разработчики не видят, токо код пишут, и проверяют чтобы компилялось.

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

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

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

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

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

А как же gcj?

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

С..пасибо.... Ты заходи, если что... :)

anonymous
()

Рискну предположить, что богатые возможности introspection и последующего reflection могут заложить основу для создания object-relational persistence layer для GObject в духе Hibernate, тем самым открывая языкам типа Vala путь в мир enterprise.

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

Нафиг только энтерпрайзу нужен gtk/glib... Окошки а так ваяют, на чём не попадя, а для ваяния особо сурьёзных поделок есть более другие языки.

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

>Скажите, а IUnknown скоро будет?

java.lang.Class - такой же IUnknown. Другое дело что IUnknown->AddRef() / IUnknown->Release() в принципе не могут заставить не течь даже платные специалисты, не говоря об опенсорце.

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

>не говоря об опенсорце.

Умри, быдло.

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

> велика и могуча русская языка

Падежей только мало. И лаконичность за последнее тысячелетие здорово потерял.

mv ★★★★★
()

Ага... Понятно к чему были эти разговоры о .NET а Gnome. Они решили GObject сделать а-ля .NET Framework, а язычки C# подобные уже для него есть. В принципе совсем не плохо.

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

> открывая языкам типа Vala путь в мир enterprise.

Вряд ли. "Мир enterprise" - это, в основном, marketing bullshit. А на вале особенно непобулшитишь ;-)

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

Некоторые веб-ориентированные бизнес-приложения до сих пор пишут на сях, в виде модулей под апаче. Не от хорошей жизни, надо полагать.

А теперь представьте перспективы труЪ-компилируемого языка с автоматическим управлением памятью, богатой рантайм-библиотекой и ORM.

anonymous
()

Как много ынтерпрайза...

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

> Ага... Понятно к чему были эти разговоры о .NET а Gnome.
> Они решили GObject сделать а-ля .NET Framework, а язычки C#
> подобные уже для него есть. В принципе совсем не плохо.

Вообще то когда первый раз вышел NET я тогда еще подумал вот наконец
то додумались. Транслировать разный код в Си код и с последующей
сборкой под нужную платформу. А как спеки прочел так понял что опять
VM аля Java :(

Короче если Vala пойдет дальше также то это будет RIP для Net и Java !

http://www.linux.org.ru/jcaptcha.jsp

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

> Чё таблетки не пьёшь? man QMetaObject

Вот сиди и читай, а потом для просветления прочитай новость еще раз.

и не пори чуши.

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

> "Прямую" сериализацию/десериализацию. Автоматическая проверка api тоже многого стоит.

А вот и пися. Потому как GLib/GTK+/etc изначально не затачивались под это, в результате - куча подводных граблей, с которыми лично мне приходится сталкиваться при разработке Glade3.

Короче, чувствую я, что область применения ограничится одним Vala.

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

> А как спеки прочел так понял что опять
> VM аля Java :(


Неправильно прочел :). Оно компилируется в нативный код.

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

> Короче, чувствую я, что область применения ограничится одним Vala.

Пора бы уже хотя бы одну область применения довести до production уровня. А то задумок отличных в open source море, а реализаций хороших не фонтан.

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

>> Чё таблетки не пьёшь? man QMetaObject

> Вот сиди и читай, а потом для просветления прочитай новость еще раз.

Глупенький штоле? Ну-ка, объяснил, какой ещё тебе интроспекции не хватило в Qt, или соснул плюсца.

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