LINUX.ORG.RU

Wayland 1.8

 ,


0

2

Доступен новый релиз Wayland 1.8 — протокола для организации графического сервера в Linux и других UNIX-подобных операционных систем, а так же связанного с ним эталонного композитного сервера Weston 1.8. Основная разработка протокола завершена, и сейчас идёт оттачивание кодовой базы и улучшение документации. В новой версии:

Wayland 1.8

  • Осуществлено разделение заголовочных файлов для клиента (wayland-client-core.h) и сервера (wayland-server-core.h) на базовые компоненты и генерируемые протоколы.
  • В scanner добавлена опция --include-core-only, что позволяет использовать только базовые заголовки при разработки биндингов (bindings), а также при генерации кода протоколов на основе новых файлов wayland.xml в libwayland.

Weston 1.8

  • В состав приняты подготовленные компанией Collabora изменения, касающиеся модернизации EGL и создания тестового фреймворка. Улучшена реализация EGL в gl-renderer и добавлен тестовый режим рендеринга без экрана («headless rendering»), который позволяет синтетически запустить Weston в идеальных условиях, исключив влияние системы вывода.
  • Началось тестирование оболочки для информационно-развлекательных систем (IVI), добавлена экранная раскладка для IVI.
  • Поддержка перерисовки по расписанию.
  • Добавлен API для захвата содержимого поверхностей (surface-shooting API).
  • Добавлена возможность указания альтернативного файла конфигурации (weston --config=my-weston.ini). Заданный файл конфигурации будет охватывать все приложения, запущенные в данном экземпляре Weston.
  • В компоненты редактирования текста добавлена поддержка операций помещения и извлечения данных из буфера обмена.

Выход Wayland 1.9 запланирован на конец сентября 2015 года.

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

★★★★★

Проверено: JB ()
Последнее исправление: ymn (всего исправлений: 5)

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

Запретив goto не будет стоять такой проблемы, это реальный факт

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

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

На мой взгляд, это очевидно.

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

или когда оно вообще исчезает, или когда преобразуется в switch...

Любитель все полностью переписывать?

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

это с готу-то линейный?

Именно. Человек вообще хреново обрабатывает вложенные конструкции.

Программист глядя на функцию №1, видит текст, имеющий естественную человеческую логику и разбитый на предложения естественным образом:

выставить_cloexec_или_закрыть(дескриптор)
{
    если невалидный дескриптор,
        вернуть невалидный дескриптор;

    получить флаги;
    если не получилось,
        на выход;

    если не получилось установить флаги с CLOEXEC,
        на выход;

    вернуть дескриптор;

выход:
    закрыть дескриптор;
    вернуть невалидный дескриптор;
}

дооо в 2 раза длиннее только и готу на пустом месте, а так читабельный, ага

Кстатиеслиисатьбезпробеловтобудетещекорочеичитабельнее.

готу на пустом месте, а так читабельный, ага

Мистическая боязнь гоуту. Пора фильмы ужасов для программистов снимать. «Гоуту». «Гоуту 2». «Гоуту возвращается». «Полночный гоуту».

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

покажите неправославное тогда

да сколько угодно: суть проблемы в том, что с помощью goto можно легко выстрелить себе в ногу сломать структуру программы, сделав ее непонятной для быстрого понимания без бутылки. А можно и не сделать, если применять правильно, со знанием. Как электричество — оно не хорошо и не плохо, однако убиться им, если пользоваться без теор. подготовки — как два пальца, что не отменяет дюже полезных свойств электричества в народном хозяйстве.

покажите неправославное

ну раз обещал: переход из середины одной функции в середину другой, как правило, — неправильное применение goto, ибо когда кто-то НОРМАЛЬНЫЙ читает код, он ждет что функция — некий законченный блок, и никто, в здравом уме не станет ожидать что две функции будут прыгать одна в другую, аки лента Мёбиуса.

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

Пора фильмы ужасов для программистов снимать. «Гоуту». «Гоуту 2». «Гоуту возвращается». «Полночный гоуту».

«10 GOTO 10»

:)

pihter ★★★★★
()
Последнее исправление: pihter (всего исправлений: 1)
Ответ на: комментарий от pihter

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

Только это может выйти накладно. К тому же посмотри еще раз:

static int
set_cloexec_or_close(int fd)
{
    long flags;

    if (fd == -1) {
        return -1;
    }

    flags = fcntl(fd, F_GETFD);

    if (flags == -1 || fcntl(fd, F_SETFD, flags | FD_CLOEXEC) == -1) {
        close(fd);
        return -1;
    }

    return fd;
}

Чем же этот код так «неподдерживаем» и «нечитаем», и как от этого страдает «унифицированность», если такой стиль и считать основным в проекте?

stylemistake
()

Скоро будем плясать на могиле 30-летнего легаси иксов, которые понаписали всякие проприетарщики типа IRIX да AIX для своих коммерческих нужд. Ура!

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

Только это может выйти накладно

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

Чем же этот код так «неподдерживаем» и «нечитаем», и как от этого страдает «унифицированность», если такой стиль и считать основным в проекте?

Да Б-га ради, делай как тебе нравится, Си вообще тяжелочитаем с его скобочками и кракозябрами (я про паскаль намекаю с блекжде^W begin/end'ами, да and/or'ами) просто тебе же devzero русский языка все объяснил, мол человек хреново обрабатывает трех(и более)этажные вложенные конструкции, так человекопонятнее. Ты же когда алгоритм «как пройти в библиотеку» описываешь прохожему, не пользуешься двух-трех этажными вложенными условиями, правда?

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

В теории, если (если!) разрабы не обосрутся, более вменяемый API.

RiseOfDeath ★★★★
()

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

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

Любители вяленого традиционно путают протокол и реализацию. Иксы ценны в первую очередь тем, что это ПРОТОКОЛ. Стандартный и мощный.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от stylemistake

К тому же посмотри еще раз:

Посмотрел еще раз.

Чем же этот код так «неподдерживаем» и «нечитаем», и как от этого страдает «унифицированность», если такой стиль и считать основным в проекте?

Первое.

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

Второе.

Длинных условий также стоит по возможности избегать, т.к. длинные имеют тенденцию превращаться в сверхдлинные. А сврехдлинные — в «удалить и переписать эти строчки заново проще, чем расставить в них скобки в правильном порядке».

Третье.

Перед нами пример кода, имеющего очень распространённую структуру:

Шаг первый. (Если не удался, вся функция не удалась.)
Шаг второй. (Если не удался, вся функция не удалась.)
Шаг третий. (Если не удался, вся функция не удалась.)
Шаг четвёртый. (Если не удался, вся функция не удалась.)
и т.п.

Естественным образом такой записывается либо так:

Шаг первый.
Если не удался,
    на выход.

Шаг второй.
Если не удался,
    на выход.

Шаг третий.
Если не удался,
    на выход.

Шаг четвёртый.
Если не удался,
    на выход.

Либо так:

Если шаг первый не удался,
    на выход.

Если шаг второй не удался,
    на выход.

Если шаг третий не удался,
    на выход.

Если шаг четвёртый не удался,
    на выход.

(Подходы можно и нужно совмещать.)

Именно такой код мы по ссылке и видели.

А вот что получается у вас:

Шаг первый.

Если предыдущий шаг не удался или шаг второй не удался,
  освобождаем ресурсы и выходим.

Каша. Это как если бы вы владели грамматикой русского языка, но не владели способностью ясно выразить мысль.

В коде у вас так и получается. Грамматику языка вы знаете. А вот как писать «красиво» (применительно к коду «красиво» будет означать «понятно и удобно для дальнейшего сопровождения») - не очень хорошо знаете.

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

Фигню сотворил мелкософт когда стал лепить из бэйсика для компьютеров, отнюдь не со 128К ОЗУ и накопителем на аудиокассетах, аналог дельфей.

Эээ... Вообще-то дельфи появилась чуть-чуть позже вижуал васика и в альфа-версии вроде бы даже имела неофициальную аббревиатуру VBK (visual basic killer). Естественно, для релиза название пришлось подобрать другое.

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

А, да, ещё нужна сетевая прозрачность хоть через 100500 костылей, но говорят, оно как-то работает.

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

классический нарезной батон в ифе.

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

Каша. Это как если бы вы владели грамматикой русского языка, но не владели способностью ясно выразить мысль.

Ты привел следующий код:

выставить_cloexec_или_закрыть(дескриптор)
{
    если невалидный дескриптор,
        вернуть невалидный дескриптор;

    получить флаги;
    если не получилось,
        на выход;

    если не получилось установить флаги с CLOEXEC,
        на выход;

    вернуть дескриптор;

выход:
    закрыть дескриптор;
    вернуть невалидный дескриптор;
}

Под твое определение в пункте 3 оно не подходит :).

Вот код без goto:

выставить_cloexec_или_закрыть(дескриптор)
{
    если невалидный дескриптор,
        вернуть невалидный дескриптор;

    получить флаги;

    если не получилось взять флаги
    или не получилось установить флаги с CLOEXEC
        закрыть дескриптор;
        вернуть невалидный дескриптор;

    вернуть дескриптор;
}

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

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

посмотри еще раз:

сам посмотри еще раз:

Вот оригинальный код:

	if (flags == -1)
		goto err;

	if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) == -1)
		goto err;

который ты заменил на:

if (flags == -1 || fcntl(fd, F_SETFD, flags | FD_CLOEXEC) == -1)

обрати внимание, что в оригинальном коде, если flags == -1, то дальше код выполняться не будет, а у тебя fcntl(fd, F_SETFD, flags | FD_CLOEXEC) выполнится в любом случае. То есть ты переврал логику даже в таком простом случае как этот, просто запутавшись в своем уберусловии гонимый желанием оптимизировать. Признаешь? Хорошая иллюстрация нашим словам?

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

дельфи появилась чуть-чуть позже вижуал васика и в альфа-версии вроде бы даже имела неофициальную аббревиатуру VBK (visual basic killer)

Таки удалось убить васика, надо отдать должное

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

Так не кошерно, переведи на иврит.

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

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

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

Под твое определение в пункте 3 оно не подходит :).

Подходит. Где тут можно увидеть не соответствие, не представляю.

    получить флаги;
    если не получилось,
        на выход;

    если не получилось установить флаги с CLOEXEC,
        на выход;
    шаг первый;
    если не удался,
        на выход;

    если не удался шаг второй,
        на выход;

Читается оно абсолютно одинаково, но меньше кода и нет goto.

Я ж говорю, религиозная боязнь goto.

меньше кода

А можно вообще всё на операторе ?: оформить, кода будет еще меньще. И?

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

Иксы давным давно пора выкинуть и заменить на что-то современное.

Так что вы все тормозите?
Ох уж эти тормозы прогресса :(

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

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

ды пусть хоть 20 раз будут промышленным стандартом :) ..

..нас-то ведь волнует состояние *наших* компьютеров (а не компьютеров на заводах и промышленных цехах :))

user_id_68054 ★★★★★
()
Ответ на: комментарий от pihter
int boo()
{ printf("boo!");
return 1;
}

int main()
{
int x = 1;
printf("x = ");
if(x || boo());
printf("true");
return 0;

Вывод приложения: x = true, ага. Для вас это ВНЕЗАПНО?

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

Я ж говорю, религиозная боязнь goto.

Ради двух строчек кода городить метку с goto совсем неоправданно.

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

Я б не так не говорил, все таки очень классный дистрибутив
Полностью совместим с линуксовым апстримом, все свежее и новое
Нужен стабильный как дебиан - CentOS или покупай RHEL

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

Да вполне нормально работает либра
Лично я ничего больше 3 страниц не открываю, и презентации не больше 40 слайдов
Бегает вполне шустро на старом убитом ноутбуке

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

Когда уже революция то? Вот системд всех захватил быстро и решительно. А этот все ходит кругами да кричалки кричит, и что-то как-то не очень.

Революции не будет, скажем спасибо за это космонавту!

SystemD, которым RedHat все ещё не пользуется, был внедрен в везде куда только РХ может дотянуться, чтоб нагадить Canonical с ее Ubuntu.

Так как космонавт заявил о разарботке Мир, потребность в революции отпала.

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

И ШГ нормальные там по дефолту, правда хитинг кривой и без RGB
Я еще из винды вытащил Verdana, Times, Arial, Georgia, Impact и там по мелочи, и стало замечательно
Дак еще и в интернете нашел для fontconfig: 39-clearfonts.conf
скопировал в /etc/fonts/conf.d, задал общесистемный хитинг на none, rgb сглаживание, а для Cantarell задал hintmedium и без RGB, Grayscale сглаживание
Так вообще глаз просто вне себя от счастья :-)

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

ШГ нормальные
хитинг кривой
без RGB

Я, видимо, никогда этого не пойму. В плане сочетания взаимоисключающих параграфов (когда был StarOffice 3.1, настраивал его так,что на экране были bitmap шрифты, идентичные PS шрифтам, и сам правил PS шрифты).

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 2)
Ответ на: комментарий от Deleted
выставить_cloexec_или_закрыть(дескриптор)
{
      Если невалидный дескриптор,
        вернуть невалидный дескриптор потом
       если не получилось вернуть флаги или  установить флаги с  CLOEXEC,  закрыть дескриптор, потом вернуть невалидный дескриптор.
       Вернуть дескриптор
}

В 5 раз ближе к естественной человеческой логике

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

пруф?

Документов с признанием у меня нет.

Но SystemD был объявлен меньше чем через неделю после того как в публичном сраче РХ с Каноникал, Марк заявил, что РХ использует upstart разработанный Канононикал.

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

Там было написано «новый X-сервер».

Если бы это действительно была новая реализация X11, было бы замечательно...

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

Так зависит от опций компилятора же, нет? Может и вычислить.

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

Чуваки пишущие пятизначные условия, как правило не умеют в минимизацию Логических функций. т.е неосиляторы.

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

ну раз обещал: переход из середины одной функции в середину другой, как правило, — неправильное применение goto

int boo()
{ printf("boo!");
LabelB:
return 1;
}
int boo1()
{goto LabelB;
return 1;
}

заставьте goto прыгнуть из одной ф-ции в другую

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

Я бы заменил первый return на goto и влепил проверку дескриптора перед close.

В принципе, так действительно идеологически более правильно, но и в перфекционизм впадать не надо.

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

Я бы заменил первый return на goto

с добавлением ещё одной метки или лишним бессмысленным close()?

влепил проверку дескриптора перед close.

смысл, если она и так есть внутри close?

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

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

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

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

с добавлением ещё одной метки

На ту же метку.

лишним бессмысленным close()?

С тем же close.

смысл, если она и так есть внутри close?

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

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

С тем же close.

close в этом случает вызовется. зачем нужен лишний вызов функции на пустом месте? это даст просадку производительности, в среднем, процентов на 200, учитывая, что вызывающая ф-ция весьма короткая. ну и зачем оно надо?

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

Космонавт irrelevant. Он может пилить свой манямирок до посинения, РХ все равно протолкнет и в рот, и в анус, и еще дыр наделает и туда протолкнет.

РХ как был так и остается локомотивом всея луникса. А Космонавт десяток лет в игрушки играется.

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