LINUX.ORG.RU

libmui — библиотека для интерфейсов в стиле MacOS Classic

 , , ,

libmui — библиотека для интерфейсов в стиле MacOS Classic

5

4

Привет, ЛОР!

Пару дней назад был опубликован код библиотеки libmui, которая позволяет создавать интерфейсы пользователя, напоминающие операционную систему MacOS Classic. API библиотеки также вдохновлён этой ОС.

Библиотека написана на языке C и отличается минимальным набором зависимостей. Поддерживается работа только в средах X11, поддержка Wayland автором не планируется.

Код опубликован под лицензией MIT.

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

★★★★★

Проверено: hobbit ()
Последнее исправление: CYB3R (всего исправлений: 3)

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

А это и без VLA можно делать. Например, частая тема:

Только не char data[], а char *data.

Приведенная мной запись выше означает, что размер массива (и структуры соответственно) будет задаваться в рантайме.

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

Нет, не правильно. В «замечательном» C99 char data[] в структуре означает, что массив будет иметь такой размер, какой получится в результате его инициализации.

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

Приведенная мной запись выше означает, что размер массива (и структуры соответственно) будет задаваться в рантайме.

Ну, да. Всё так. А что плохого-то? В гнутом говне это ещё до C99 ёмнип появилось, только там надо было 0 в объявлении структуры писать.

https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html

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

0 в объявлении структуры писать.

Это другая штука.

VLA удобны тем, что ты можешь сделать функцию вида void foo(int n, char a[n]), и компилятор понимает, что n – это длина массива a. Не просто разраб понимает это тайное знание, но и компилятор.

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

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

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

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

Компилятор не должен ничего понимать. «Си — это кроссплатформенный ассемблер». В цели этого языка не входит предоставление высокоуровневых абстракций. Вы же не требуете аналогично, например, от FASM. Почему вы этого требуете от Си? Что вы написали, то он и сгенерировал. Если что-то не так с руками, то не надо заниматься деятельностью по «стандартизированию» Си, а надо чинить собственные руки.

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

Компилятор не должен ничего понимать. «Си — это кроссплатформенный ассемблер». В цели этого языка не входит предоставление высокоуровневых абстракций. Вы же не требуете аналогично, например, от FASM. Почему вы этого требуете от Си? Что вы написали, то он и сгенерировал. Если что-то не так с руками, то не надо заниматься деятельностью по «стандартизированию» Си, а надо чинить собственные руки.

А это вообще полный бред. В компиляторе C оптимизатор на два миллиона строк, C ОЧЕНЬ старается сгенерировать не то, что ты написал, а то, что будет быстрее работать.

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

Нет, я не против UB. Оптимизатор может делать что хочет, пока это не нарушает задумку автора. Как только он начинает требовать от программиста лишнего (вроде того же strict aliasing), он становится только вредным.

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

Компилятор компилирует не то, что ты ДУМАЕШЬ, что написал, а то, что ты написал по факту.

Он не доморощенный литературный критик на ютубе, чтобы раскрывать «задумки автора».

Отмазка реально звучит в стиле сектантов плоской Земли.

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

А как он может понимать, что я хочу сделать, например, работая с метками? Правильно, никак. И оптимизатор часто творит фигню. Хотя метки описаны очень подробно в стандарте от ISO.

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

Что вы написали, то он и сгенерировал.

АУЫАУАУАУАУААЫЫЫЫЫЫЫЫЫЫЫЫ

То-то блин в шланге с гцц по миллиону с лишним строк в каждом, которые делают просто чудовищные вещи с твоим сишным кодом.

В цели этого языка не входит предоставление высокоуровневых абстракций.

Только C это делает на каждый чих.

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

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

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

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

Без этой фигни ты бы не мог бегать и рассказывать всем, какой C быстрый. ПОтому что C с -O0 сливает даже голангу.

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

Таки основное отличие -O0 и -O1 - вовсе не в порче кода, данного программистом, а в отсутствии оверхеда, данного уже компилятором. Например, избавление от лишних стекфреймов, более адекватное засовывание переменных в регистры итд. Всякая дичь начинается в -O2 и ещё хуже в -O3. Хотя, в -O1 она тоже местами есть в последних версиях, но её влияние незначительно. И, что удивительно, хорошо написанный код имеет большую разницу по скорости между -O0 и -O1, незначительную а иногда и никакую между -O1 и -O2, а -O3 местаи вообще оказывается медленнее чем -O2. Так что, большинство этих переделываний - это попытки компилятора исправить чей-то некачественный код.

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

Так что, большинство этих переделываний - это попытки компилятора исправить чей-то некачественный код.

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

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

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

Их авторы реализуют стандарт языка. Причём с религиозным упорством. Соответственно, все вопросы к авторам этого стандарта.

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

И почему-то никто не осмеливается сказать, что одна конкретная организация пишет какие-то писульки, которые каким-то боком влияют на работу других программистов, не самым, мягко говоря, удачным образом. Речь про ISO.

Почему-то к спецификации ANSI вопросов ни у кого нет. Я ни разу не видел, чтобы кто-то заявлял, что ANSI C — плохая спецификация.

Почему-то к K&R спецификации тоже ни у кого вопросов нет. Опять-таки я никогда не видел критики в адрес K&R C.

Зато к деятельности ISO вопросов масса. Причем как у программистов Си, так и Си++.

Я не удивлюсь, если спецификацию Си, которую разработают пара-тройка ученых (вчерашних студентов) будет лучше, чем вся «продуктивная деятельность» ISO за последние 25 лет.

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

И почему-то никто не осмеливается сказать, что одна конкретная организация пишет какие-то писульки, которые каким-то боком влияют на работу других программистов, не самым, мягко говоря, удачным образом. Речь про ISO.

ISO не пишет стандарт C. Стандарт пишут чуваки из контор типа Гугеля или Микрософта.

Почему-то к спецификации ANSI вопросов ни у кого нет. Я ни разу не видел, чтобы кто-то заявлял, что ANSI C — плохая спецификация.

ANSI C – плохая спецификация, ведь именно в ней появился такой термин как UB.

Алсо, ANSI тоже не писали стандарт. Его писали чуваки из всяких AT&T и прочих IBM.

Почему-то к K&R спецификации тоже ни у кого вопросов нет. Опять-таки я никогда не видел критики в адрес K&R C.

K&R C – полное говно. А ещё, K&R C не является спецификацией.

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

K&R C – полное говно.

Конкретики не будет.

А ещё, K&R C не является спецификацией.

Это именно что спецификация, а не стандарт.

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

Конкретики не будет.

Конкретика: язык C как он описан в K&R был заточен под PDP-11 и на других платформах работает как говно. Поэтому в 80х разные конторы плодили компиляторы под свои платформы с вагонами расширений, чтобы это всё хоть как-то шевелилось.

Это именно что спецификация, а не стандарт.

Нет, это учебник.

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

Нет, это учебник.

Спецификацию от стандарта отличает как раз необязательность наличия статуса юридического документа.

Вообще плохо, когда стандарт пишет только одна организация. Нет желания написать его нормально (ведь и так сожрут, альтернатив ведь нет).

Лично я был бы всеми руками и ногами за, если был бы какой-нибудь ГОСТ на язык программирования Си (и Си++), который бы отличался от бредней ISO в лучшую сторону.

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

Спецификацию от стандарта отличает как раз необязательность наличия статуса юридического документа.

Нет, не отличает. У стандарта ISO нет никакого особого юридического статуса.

Вообще плохо, когда стандарт пишет только одна организация. Нет желания написать его нормально (ведь и так сожрут, альтернатив ведь нет).

Лол я тебе ещё раз объясняю, что ISO не пишет стандарты.

Лично я был бы всеми руками и ногами за, если был бы какой-нибудь ГОСТ на язык программирования Си (и Си++), который бы отличался от бредней ISO в лучшую сторону.

Только это будет не язык программирования Си. Это будет другой язык.

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

Только это будет не язык программирования Си. Это будет другой язык.

Почему же C99 считают языком Си? Авторы его не писали таким. Более того, они сами решительно выступали против ISO'шной самодеятельности. Они и против ANSI были, если честно, но все же согласились написать во втором издании именно про ANSI C. (Они были против слова const)

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

Почему же C99 считают языком Си? Авторы его не писали таким.

Да нет, авторы C99 писали C99 именно таким, каким они его написали.

Более того, они сами решительно выступали против ISO’шной самодеятельности.

Ещё раз, для очень тупых: ISO не пишет стандарты. В ISO нет специалистов по всему и на каждый чих, которые пишут все стандарты опубликованные ISO.

Но если тебе хочется сишечку не от ISO, поставь себе kencc. Прямо от Кена Томпсона, как диды завещали. Только сишный код в лялексе им компилиться не будет.

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

Только это будет не язык программирования Си. Это будет другой язык.

Ещё как будет, если к нему сделают рабочий компилятор.

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

Спецификацию от стандарта отличает как раз необязательность наличия статуса юридического документа.

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

Лично я был бы всеми руками и ногами за, если был бы какой-нибудь ГОСТ на язык программирования Си (и Си++), который бы отличался от бредней ISO в лучшую сторону.

Вся это графомания, вне зависимости от авторства, никакой самоценности не имеет. Есть реальный компилятор, у него есть спецификация что именно он компилирует - вот это важно.

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

Нет, K&R плохой не из-за PDP, а из-за таких вещей как неявный int и указание типов аргументов отдельно от их списка, а так же ряда других на то момент не сильно сформировавшихся вещей, которые я не помню. В целом это всё не их вина, а просто язык был ещё недоработан.

И всё-таки K&R вполне можно считать спецификацией.

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

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

firkax ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.