LINUX.ORG.RU

Планы по выпуску GTK+ версии 3

 


1

0

В списке рассылки gtk-devel-list обсуждаются планы выпуска GTK+ версии 3. Основные подготовительные действия, которые необходимо предпринять в текущей ветке:

  • Спрятать все открытые поля структур с помощью макроса GSEAL(). В случае необходимости предоставить новые методы доступа к этим полям. Также должны быть скрыты поля-указатели "priv" на структуры, содержащие закрытые данные. Эти действия уже практически полностью проведены в репозитории git://git.imendio.com/projects/gtk+.git
  • Реализовать закрытые члены класса, что включает изменения в коде GType.
  • Объявить как deprecated публичные данные класса с помощью макроса GSEAL().
  • Поскольку не останется простого способа для доступа к полям класса, а использование g_object_[sg]et() утомительно, необходимо ввести новые методы доступа, вроде g_object_get_int(), *double(), *string() и т.д.
  • Существует множество макросов, таких как GTK_WIDGET_GET_FLAGS(), которые всегда были причиной многочисленных проблем (см. bug #69872). Необходимо реализовать нормальные методы доступа (в виде функций) и избавиться от этих макросов.
  • GtkStyle, без сомнений, самый сложный тип, нуждающийся в скрытии публичных полей, и до релиза должно быть проведено множество исследований.
  • Избавиться от всего кода, объявленного deprecated в 2.x. Это подразумевает все соответствующие виджеты и функции.
  • Удалить все поля структур из публичного API. Есть два способа достичь этого:
    a) переместить все структуры в закрытые заголовки;
    b) переместить структуры в C-файл реализации, но тогда всей библиотеке придётся использовать соответствующие методы доступа.
    Эти варианты ещё обсуждаются.
  • Отключить deprecated-код по умолчанию во флагах компиляции.
Таким образом, версия 3.0 будет готова к релизу. Все приложения, которые собираются для ветки 2.x с макросом GSEAL() и не используют deprecated-кода, будут без проблем собираться для ветки 3.x. Наверное, таким образом разработчики пытаются избежать кошмара миграции, который можно видеть на примере библиотеки Qt.

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

★★★★

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

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

Именно поэтому GtkD уже много лет живёт и здравстует, а Qt - нет до сих пор.

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

SWIG - это генератор вропперов. А для Gtk вропперы не нужны (бери готовые процедуры, преукрась немного). Что непонятного?

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

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

"фигней вропперской" страдают только gtk-шники, qt'шники просто пишут GUI

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

> Когда в плюсах можно будет менять объектную модель, не сваливаясь в обычный "С с парочкой синтаксических сахаринок" - тогда поговорим.

На что вы её менять собрались?

pppp

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

> Не перестают умилять каменты наиболее образованной фракции кдешнегов в духе "ООП=С++, Страуструп бох".

Заметьте, это наиболее образованная фракция. Вот потому холивар и не кончается...

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

>Именно поэтому GtkD уже много лет живёт и здравстует

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

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

> qt'шники просто пишут GUI

Угу, прямо начиная с собственной замены stdlib, своей «ну мы-то сделаем правильно» yet another реализации строк и контейнеров и т.д.. Сбоку пристроен сетевой велосипедЪ и еще куча всего.

Нет, про «просто пишут GUI» это Вы врете, уважаемый.

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

>из какого-нибудь убогого язычка

А ты возьми не убогий язык. Кто мешает? Про D уже сказали. Да и интерпретируемые языки есть очень хорошие.

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

Признай уже - твой D R.I.P.! Он оказался не востребован, ведь есть Сишарп, Ява, и т.д.

Так что это не аргумент.

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

>>А почему не использует?

>А что в нем есть полезного для написания GUI?

Я бы задал вопрос о том что вообще в std:: есть полезного.

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

>Назовите, пожалуйста, всех полутора разработчиков, которые им пользуются.

Если пользуются - то значит нужно. А у qt-шноков принято не считаться с другими?

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

Вот видите, Вы даже не допускаете мысли о том, что объектные модели могут быть разными...

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

>>Именно поэтому GtkD уже много лет живёт и здравстует

>Назовите, пожалуйста, всех полутора разработчиков, которые им пользуются.

ты не догоняешь: "количество биндингов" - это некий фаллический символ разработчиков gtk, не смей рушить их мировоззрение!

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

> А для Gtk вропперы не нужны (бери готовые процедуры, преукрась немного).

а как реализуется функционал сишных макросов в других языках? или предполагается, что они не нужны тем, кто пишет не на си?

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

Нет, не наиболее образованная. Наиболее шумная - правда (но это общий закон). Есть вполне образованные кдешники - просто нам с ними не по пути:)

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

Еще один 4.2.

И только полный дурак может сравнивать совершенно разные вещи: D и Яву.

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

>плюсы кагбэ ненужны

Ага, нужны плюсы, написанные на сях. Гномовские велосипеды - самые велосипедистые?

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

>Признай уже - твой D R.I.P.! Он оказался не востребован, ведь есть Сишарп, Ява, и т.д.

Придется же в конце концов все уналедованное С++ говно как-то разгребать. Часть перепишут на С, часть - на D, часть на моно с джавой.

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

>Языка в С++ нет. Есть косяки. Следовательно надо начинать с того чтобы бороться с косяками. Мейерс учит обходить маленькие косяки, Саттер - средние, Александреску - фундаментальные.

Не подскажете, кто учит приделывать ООП к C?

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

>Нет, про «просто пишут GUI» это Вы врете, уважаемый.

Я создаю окно, события-слоты-привязки, компилирую, получаю результат. Что у тебя не вяжется?

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

> нужны плюсы, написанные на сях

Домашнее задание для школьников - найти 10 различий в объектной модели gobject и объектной модели плюсов.

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

> Признай уже - твой D R.I.P.! Он оказался не востребован, ведь есть Сишарп, Ява, и т.д.

Во-первых, почему это он мой? Во-вторых, если очень хочется пофлеймить - могу запостить новость о вышедшей неделю назад новой версии компилятора, а здесь - о GUI тулкитах, а не о языках речь.

> Так что это не аргумент.

Да я, собственно, ничего и не пытаюсь доказать. :) Просто констатирую известный факт.

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

>ЗЫ Когда в плюсах можно будет менять объектную модель, не сваливаясь в обычный "С с парочкой синтаксических сахаринок" - тогда поговорим.

По-вашему лучше когда этой модели вообще нет, поэтому ее нужно придумать?

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

>gtk-шники не страдают "вропперской фигней".

ага, они ей (судя даже по этой дискуссии) живут, в то время как qt'шников это совсем не волнует

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

> Я создаю окно, события-слоты-привязки, компилирую, получаю результат. Что у тебя не вяжется?

Странно, у меня так же, но на gtk. Что у вас не вяжется?

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

Конечно, первый раз я его употребил в кавычках. Неужели не заметили?;)

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

> лучше когда этой модели вообще нет

Лучше нет, чем криво-костыльная, как в плюсах. Если бы это был настоящий ОО язык - это был бы другой разговор.

> поэтому ее нужно придумать?

Поэтому _можно_ ее придумать.

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

> ага, они ей (судя даже по этой дискуссии) живут, в то время как qt'шников это совсем не волнует

qt-шников волнует куда более фундаментальные вещи. Как избежать кошмара миграции на qt(N+1), etc.

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

> Странно, у меня так же, но на gtk. Что у вас не вяжется?

Да уже ввязалось по самые никуда ::))

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

>>Я бы задал вопрос о том что вообще в std:: есть полезного.

>Ок, жду вопроса :)

Я скорее отвечу. iostream - бесполезен, std::vector условно полезен - но лучше бы он был атомарным, std::auto_ptr условно полезен но лучше бы refcounter был на уровне языка и доступен через vTable, std::set/std::map бесполезны, так как мелкие лукапы надо хранить в сортированном массиве (типа Loki::AssocVector) а большие в БД, алгоритмы бесполезны.

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

>В какой-то степени это приемущество Gtk. Он делает то, что должен, и не больше. Нужны БД и прочее - обратитесь к соответствующим либам.

Э-э-э... а в чём выражается это "преимущество", можно слегка развернуть мысль? QtGui как бы тоже "делает то, что должен, и не больше".

Или тебя кто-то заставляет юзать QtXml если он тебе не нужен? Или ты думаешь, что я не могу вместо него заюзать libxml2, если мне вдруг захочется?

Жду пояснений....

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

> qt-шников волнует куда более фундаментальные вещи. Как избежать кошмара миграции на qt(N+1), etc.

Да ну нах. Сегодня портанул проектец на 20к строк за пару часов. И это без qt3support ::))

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

>Лучше нет, чем криво-костыльная, как в плюсах. Если бы это был настоящий ОО язык - это был бы другой разговор.

Определение ООП в студию. Независимого от языка. Утвержденное Патриком.

>Поэтому _можно_ ее придумать.

Почему не использовать язык, где уже она есть?

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

>Домашнее задание для школьников - найти 10 различий в объектной модели gobject и объектной модели плюсов.

gobject - костыль большей частью для имитации того, что в С++ есть на уровне языка

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

> SWIG - это генератор вропперов.

Ты знал!

> А для Gtk вропперы не нужны (бери готовые процедуры, преукрась немного).

Бугага. Ты исходники PyGtk видел?

> Что непонятного?

Пара вещей: почему "к классам С++ почти нереально подобраться из других языков" - ты к ним руками не лезешь, и чем "name mangling" мешает - ты его не руками эмулируешь.

Впрочем... ты что, всё вручную делал? Соболезную.

P.S. нет буквы 'o' в слове wrapper

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

Макросы во что разворачиваются? В процедуры и какие-нибудь банальные действия. Смотришь код макроса, практически копипастишь в другой язык, при этом имена процедур будут уже ссылаться на внешние вызовы. Байндинг готов, В чем проблема?

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

> А что в нем есть полезного для написания GUI?

Ну QT уже давно не только GUI. Помнится, байда для парсинга xml и что-то типа odbc там в 3-й версии уже было.

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

> Да ну нах. Сегодня портанул проектец на 20к строк за пару часов. И это без qt3support ::))

Вот как у тебя всё весело. А тестировать кто будет? Или у тебя это калькулятор на 20.000 строк, 90% из которых - комментарии со смайликами?

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

>gobject - костыль большей частью для имитации того, что в С++ есть на уровне языка

+ того, чего в С++ нет на уровне языка

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

А зачем переписывать? Работает, и ладно - С++ код не запрещает модификации. Если уж и переписывать, то только на сишарп - с С++ на D смысла мало (недопилен), на С - прикручивание костылей, на яву - привет тормозам.

Искренне желаю удачи Мигелю Д'Иказа в продвижении Mono, единственного вменяемого фреймворка под все платформы! Ну и С#, как удобного и универсального языка, способного генерировать быстрый и компактный код.

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

>qt-шников волнует куда более фундаментальные вещи. Как избежать кошмара миграции на qt(N+1), etc.

унылая галлюцинация, покури еще

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

Не так уж давно все С++ "компилеры" были препроцессорами к С. Синтаксис с тех пор практически не поменялся. Выводы делайте сами 8)

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

>Искренне желаю удачи Мигелю Д'Иказа в продвижении Mono, единственного вменяемого фреймворка под все платформы! Ну и С#, как удобного и универсального языка, способного генерировать быстрый и компактный код.

Оч-чень грубо, не умеете - не лезьте в такую тему. Тоньше надо.

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