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

Ответ на: комментарий от rudchenkos

>> std::auto_ptr условно полезен но лучше бы refcounter был на уровне языка и доступен через vTable

>std::auto_ptr не подсчитывает ссылки, читайте документацию по STL

Смартуказателя с подсчетом ссылок в STL вообще нет. Я писал про то что есть.

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

>Ни кутя, ни тк не соблюдают условие "платформообращующая либа на С" - поэтому идут лесом. Ок, тк пусть останется - там интерфейс через скрипт ЕМНИП, это тру.

Вы ради архаичных правил готовы терпеть тормоза и тащить сквозь все времена средневековые костыли, тогда как другие в это время (Trolltech) дают обществу инновации и еще осмеливаетесь порицать последних...

GTK R.I.P

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

>Вот почему цппшники так рьяно наезжают на сишников, которым ООП и без кейворда class в языке хорошо пишется?

"хорошо пишется" - это тоннами макросов и костылями вроде vala? тогда уж лучше "плохо писать" на с++ =)

>А когда им показываешь пальцем на конеподобный трах с шаблонами в stl, boost, etc, которыми они пытаются подражать

а ты не показывай пальцем на чужую, а покажи свою работу

>более мощные языки, они сразу говорят, что им и так нормально, другие языки не нужны?

эти "более мощные языки" или интерпретируемые, или имеющие отстойные компиляторы и поэтому в области общего применения плюсам далеко не конкуренты

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

>> Если мне покажут язык без костылей, то мой выбор будет сделан!

> Common Lisp

lol, это там где тысяча незначительно различающихся функций?

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

>Куда смотреть? На Pricing and availability? Они первыми придумали продавать библиотеки?

Ага, смотри куда хочешь, слив защитан =)

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

> а ты не показывай пальцем на чужую, а покажи свою работу

Сначала ты покажи, какую часть в stl или boost написал.

> эти "более мощные языки" или интерпретируемые, или имеющие отстойные компиляторы и поэтому в области общего применения плюсам далеко не конкуренты

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

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

> Ага, смотри куда хочешь, слив защитан =)

Мне по барабану, что там анонимусы считают. Всё равно они невменяемые студенты.

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

> поэтому в области общего применения плюсам далеко не конкуренты

В области общего применения плюсов, слава Аллаху, уже нет.

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

>>>Если мне покажут язык без костылей, то мой выбор будет сделан!

>>ANSI C89

>Знатно пошутил.

Ты уже малость надоедать начинаешь.

Вопрос: пример языка без костылей.

Ответ: Си. Простой и тупой как пробка императивный язык, предсказуемый (по сравнению с Си++ он очень предсказуемый), гибкий, высокопроизводительный, быстро компилирующийся, легко читаемый.

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

>Сначала ты покажи, какую часть в stl или boost написал.

никакую

>Учитывая, что задачи сейчас общего применения перекрываются возможностями и скоростью

типичных ход мыслей быдлокодера (а некоторые еще потом искренне удивляются, почему у них на n-гигагерцах калькулятор тормозит)

>а на сгенерированный плюсатым компилятором код вы не смотрели ни разу

смотрел и не раз, и он гораздо лучше си-шного в "эмуляции ООП", про интерпретируемое говно речь даже не идет

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

>Мне по барабану, что там анонимусы считают. Всё равно они невменяемые студенты.

по себе других не судят

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

> смотрел и не раз, и он гораздо лучше си-шного в "эмуляции ООП", про интерпретируемое говно речь даже не идет

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

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

>>Мне по барабану, что там анонимусы считают. Всё равно они невменяемые студенты.

> по себе других не судят

Я зарегистрирован, ВУЗ окончил в 2004 году, вменяем.

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

>Ответ: Си. Простой и тупой как пробка императивный язык, предсказуемый (по сравнению с Си++ он очень предсказуемый), гибкий, высокопроизводительный, быстро компилирующийся, легко читаемый.

пример:

static int i=5;
...
if (j>10) i=j;
...

чему равно значение i до проверки условия в многопоточном окружении?





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

> Ты уже малость надоедать начинаешь.

Ты _уже_ сильно надоел.

>Вопрос: пример языка без костылей.

>Ответ: Си

В теме о Gtk, который по факту представляет из себя набор костылей на Си, этот ответ звучит просто сюрреалистично. Это не говоря о том, что в Си с рождения встроен костыль, который называется "препроцессор".

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

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

> Исключением может быть Лисп, но я не уверен даже в этом.

У лиспа проблемы с тем, что его придумали до широкого распространения TCP/IP и SMP. Ревизию стандарту неплохо было бы сделать и привести всё это разнообразие к одному виду.

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

>Ну то же самое происходит с плюсами, когда там начинают эмулировать мультиметоды, интроспекцию, аспекты и т.п

а мне этого не нужно

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

а макросами, значит, тебе пользоваться запретили? бедный.

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

> Быдлокодер значит?

Если твой воспалённый мозг это успокоит, то пусть будет так.

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

>чему равно значение i до проверки условия в многопоточном окружении?

Шут приплюсованный. В стандартном С++ тоже нет понятия "многопоточность". И STL по стандарту не многопоточная, многопоточность реализуется расширениями типа stlport.

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

> а мне этого не нужно

Ну вот и сишникам ничего из плюсов не надо. Дошло?

> а макросами, значит, тебе пользоваться запретили? бедный.

А ещё можно ассемблерный код инлайнить. Хороший язык C++.

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

>Ну вот и сишникам ничего из плюсов не надо. Дошло?

Почитал эту новость и сильно засомневался, да и не только я (судя по комментариям)

>А ещё можно ассемблерный код инлайнить. Хороший язык C++.

Да, хороший, что все позволяет, в отличии от С, в котором для поддержки ООП даже на базовом уровне (приватные методы/данные) приходится лепить километровые костыли

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

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

А вот не скажи. Я когда фильтр к DirectShow писал, обнаружил что COM-овский (объектно-ориентированный, в варианте объектной модели windows) код на Си проще писать. Нету всякой ненужной неявной бредятины которую С++ без спроса впердоливает. Тогда то и появилось у меня подозрение что мой любимый С++ - говно, только под ногами мешается и кодить не дает.

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

>ты не ответил прямо на вопрос, слив защитан

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

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

> Да, хороший, что все позволяет

Ну покажи нам, как вызывается мультиметод в C++, раз он всё позволяет.

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

>пнх

да ты хамло

>в многопоточном окружении при работе со статическими переменными надо захватывать мутекс либо знать что он захвачен уровнем выше

как так?! ты же говорил, что Си'шный код такой понятный и простой, а тут какие-то мьютексы? видимо, код Си прозрачен только в программах уровня "hello world"

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

Сразу видно Ъ :)

Зачем читать, если за 10 страниц все забудут то, что было в начале ;)

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

> Платформообращующие библиотеки в юниксе должны быть на С

Должны быть? Практика показывает, что такие утверждения скорее желание нежели реальная необходимость.

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

> А вот не скажи. Я когда фильтр к DirectShow писал, обнаружил что COM-овский (объектно-ориентированный, в варианте объектной модели windows) код на Си проще писать. Нету всякой ненужной неявной бредятины которую С++ без спроса впердоливает. Тогда то и появилось у меня подозрение что мой любимый С++ - говно, только под ногами мешается и кодить не дает.

Прозреваю вындотраха.

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

>> то импорт произвольной, заметьте, именно _произвольной_ функции Си

> Буэ, белки ржут над хомяком запхавшим кактус за щеку. В яве это делается проще и безопаснее. Хуже того, автоматически.

Таварисч не осилил ClassLoader в Java? :)

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

>>Ну покажи нам, как вызывается мультиметод в C++, раз он всё позволяет.

> http://ru.wikipedia.org/wiki/Мультиметод#C.2B.2B

Спасибо, посмеялся. Посмотри, как это делается в языках, где есть настоящие, живые мультиметоды. На этой же странице внизу пример на Питоне есть. Код на CLOS ещё красивее и лаконичнее.

А то, что ты привёл - это из того же разряда, что и ООП на Си.

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

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

> А вот не скажи

Не сказать чего? Что препроцессор - это костыль (причем кривой)? Иил что Gtk вырастил нехилый набор костылей для поддержки ООП?

> Я когда фильтр к DirectShow писал, обнаружил что COM-овский (объектно-ориентированный, в варианте объектной модели windows) код на Си проще писать.

А то, что Си++ включает в себя весь Си89 - ты не знал? И в любом случае, то, что _тебе_ было проще писать COM-код на обычном Си, может говорить не только о том, что Си++ плох, но и о том, что ты плох, и о том, что COM плох.

> Нету всякой ненужной неявной бредятины которую С++ без спроса впердоливает.

Примеры бредятины?

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

> По ответам похож на пубертатного подростка? ;)

Нет. На спеца, который еще не набил себе шишек ;)

Про три стадии обучения знаешь? ;)

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

> Нет. На спеца, который еще не набил себе шишек ;)

Ну почему же, коммерческие проекты на языках, про которые спор тут идёт, писал. Прекрасно понимаю, что если не впадать в маразм, и не делать на С++ то, что на нём делать не надо, то писать на нём, в целом, легче, чем на голом Си. Хотя бы потому, что язык по абстракциям всё же выше уровнем. Но если не повезло, и в доступных библиотеках нет подходящих костылей для ещё более высоких абстракций, то проще на другой язык переключиться, чем в муках рожать темплейтный ужос. Впрочем, если в коде направо и налево используются разнообразные части boost, то это тоже сигнал, что пора учить новый язык.

> Про три стадии обучения знаешь? ;)

Возможно, но можешь напомнить :)

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

  cosine = dlsym(handle, "cos");
  if ((error = dlerror()) != NULL)  {
  fputs(error, stderr);
  exit(1)
  }

Вот тут надо было бы сделать ещё и
dlclose(handle);

А кто-то выше про выход в одной точке писал...

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

Где тормоза? gtk тормоза? с чего это вдруг? Инновации троллтеха - это вообще смешно.

А "архаичные правида" - это часть культуры юникса, если Вы не в курсе. И уйдут вместе с юниксом.

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

>Что препроцессор - это костыль (причем кривой)? Иил что Gtk вырастил нехилый набор костылей для поддержки ООП?

Без препроцессора встроенного или внешнего не написана ни одна библиотека GUI на C++.

>А то, что Си++ включает в себя весь Си89 - ты не знал?

Ну и что? Я конечно согласен мнением Торвальдса о том "чтобы написать нечто жизнеспособное на С++ нужно ограничиться вещами доступными базово и в чистом Си", но почему я для этого функционала должен брать Си++ ?

>И в любом случае, то, что _тебе_ было проще писать COM-код на обычном Си, может говорить не только о том, что Си++ плох, но и о том, что ты плох, и о том, что COM плох.

Поток сознания. COM возможно плох, но это реальный фрейворк в отличие от API BeOS. Я возможно плох, раз меня волнует применимость инструмента для достижения цели: STL, RTTI, Exceptions - любая из этих вещей тянет за собой весь CRT, который в COM фреймворк не интергирован абсолютно. И не мог быть интегрирован, так как с точки зрения Стандарта С++ у программы нет доступа к таким вещам как "монитор", "клавиатура", "сеть" и "ipc". Есть std::cin, std::cout, std::cerr и std::clog.

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

>Где тормоза? gtk тормоза? с чего это вдруг?

Латентность, заметная даже на глаз на оносительно старом железе, где qt3 себя прекрасно чувствует

>Инновации троллтеха - это вообще смешно.

Мне читать ваш пост смешно, а вот у вас я смайлика не вижу :)

>А "архаичные правида" - это часть культуры юникса, если Вы не в курсе. И уйдут вместе с юниксом.

Правильно, GNU is Not Unix!

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

>> Нет. На спеца, который еще не набил себе шишек ;)

>Ну почему же, коммерческие проекты на языках, про которые спор тут идёт, писал.

Я не об этом... в данном случае, "набить шишек" - это облажаться из-за самоуверенности и/или ограниченности.

> можешь напомнить :)

"1 - ничего не знает, не умеет, и всего боится; 2 - кое-что знает, умеет, и ничего не боится; 3 - знает и умеет всё, что нужно, и проявляет осторожность".

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

>STL, RTTI, Exceptions - любая из этих вещей тянет за собой весь CRT

4.2, учи матчасть и больше так не выставляй свое невежество

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