URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 88719
[ Назад ]

Исходное сообщение
"Релиз libpng 1.6.0 с поддержкой упрощённого API"

Отправлено opennews , 18-Фев-13 21:41 
Представлен (http://sourceforge.net/mailarchive/forum.php?thread_name=CA&...) первый стабильный релиз новой ветки libpng 1.6.0 (http://libpng.sourceforge.net/), популярной свободной библиотеки для чтения, сохранения и обработки растровых изображений в формате PNG. Новая ветка примечательна реализацией нового упрощённого API, встроенной поддержкой новых таблиц sRGB-to-linear и linear-to-sRGB, а также прекращением поддержки некоторых функций, ранее объявленных устаревшими.

Из элементов нового API можно отметить макросы PNG_FORMAT_* и     PNG_IMAGE_*, структуры png_control и png_image, функции для чтения изображений png_image_begin_read_from_(file|stdio|memory),    png_image_finish_read, png_image_free, функции для записи изображений
     png_image_write_to_file и  png_image_write_to_stdio.

Прекращена поддержка вызовов: png_get_io_chunk_name заменён на png_get_io_chunk_type, удалены встроенные макросы png_sizeof(), png_strlen(), png_memcpy(), png_memcmp() и
     png_memset(). Объявлены устаревшими фунуции png_info_init_3,
   png_convert_to_rfc1123,
   png_data_freer,
   png_malloc_default,
   png_free_default,
   png_reset_zstream.

URL: http://sourceforge.net/mailarchive/forum.php?thread_name=CA&...
Новость: http://www.opennet.me/opennews/art.shtml?num=36147


Содержание

Сообщения в этом обсуждении
"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 18-Фев-13 21:41 
Надо почитать что за упрощённое API. Возможно получится кое-где упростить код в своих проектах, а заодно устроить попоболь тем кто сидит на протухших дистрибутивах.

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено paulus , 18-Фев-13 21:48 
В raring 1.2.49

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 18-Фев-13 21:56 
Класс, это ещё лучше.

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Mihail Zenkov , 18-Фев-13 22:49 
Меня всегда удивляло, как в библиотеке от которой требуется всего навсего сжимать/разжимать поток данных, можно ломать api чуть ли не с каждым выходом 1.x.0, да еще иногда, так что поправить с ходу это было нелегко.

Надеюсь с выходом упрощенного API ситуация изменится к лучшему.


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено kurokaze , 19-Фев-13 00:02 
>Меня всегда удивляло

Попробуте попрограммировать, может тогда поймете

>да еще иногда, так что поправить с ходу это было нелегко.

[I] media-libs/libpng
     Available versions:  
        (1.2)   1.2.50
        (0)     1.5.13-r1 ~1.5.14

в чем проблема? надо будет, отдельно для 1.6 сделают слот. вам то какая разница?


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 19-Фев-13 02:27 
А вот и не сделают! Для 1.2 есть потому что LSB, а для 1.4 слота нет.

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено runoverheads , 19-Фев-13 03:00 
ну значит в пакет 1.6 будет помечен как тестируемый на долгое время

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено all_glory_to_the_hypnotoad , 19-Фев-13 23:15 
а потом всё наебнётся после долгого времени. В генте с png такое происходит регулярно

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено mavriq_ , 21-Фев-13 16:10 
> В генте с png такое происходит регулярно

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

или вам хочется и морковку съесть, и на ^W^W^W^W считать себя круче других(я gentoo 0дминю \m/.. у себя дома), и не читать хаутушки по обновлению мира (мануалы для ламеров \m/)?


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 19-Фев-13 04:49 
> Меня всегда удивляло, как в библиотеке от которой требуется всего навсего сжимать/разжимать поток данных

Ты путаешь libpng с zlib. libpng приходится делать хренову тонну вещей, посмотри хедер хотя бы если настолько в танке.

> можно ломать api чуть ли не с каждым выходом 1.x.0, да еще иногда, так что поправить с ходу это было нелегко

Чтобы поправить сходу было нелегко - такого не было. А стабильность API - это величайшее зло. Кривоваты ручки обновляться - не обновляйтесь, никто не заставляет.


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено www2 , 19-Фев-13 06:00 
>А стабильность API - это величайшее зло. Кривоваты ручки обновляться - не обновляйтесь, никто не заставляет.

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


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено ip1981 , 19-Фев-13 20:42 
Похерил API - меняй soname, блеать!!

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 21-Фев-13 00:43 
> Должна быть золотая середина и разумный баланс.

Оно и есть. soname меняется, срок на deprecated даётся более чем достаточный. Но всё равно найдутся нытики-лентяи.


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Mihail Zenkov , 19-Фев-13 18:19 
> Ты путаешь libpng с zlib. libpng приходится делать хренову тонну вещей, посмотри хедер хотя бы если настолько в танке.

Я в своей программе использую:
extern (C) png_struct* png_create_write_struct(immutable(char)*, void*, void*, void*);
extern (C) png_info_struct* png_create_info_struct(png_struct*);
extern (C) void png_init_io(png_struct*, FILE*);
extern (C) void png_set_IHDR(png_struct*, png_info_struct*, uint, uint, int, int color_type, int interlace_method, int compression_method, int filter_method);
extern (C) void png_set_pHYs(png_struct*, png_info_struct*, uint res_x, uint res_y, int unit_type);
extern (C) void png_write_info(png_struct*, png_info_struct*);
extern (C) void png_write_image(png_struct*, ubyte**);
extern (C) void png_write_end(png_struct*, png_info_struct*);

только для того чтобы просто сохранить изображение из памяти (raw rgba) в png. Это нормальный API? Такая простая операция должна выполнятся одной функцией, максимум двумя. Многие приложения вообще не работают с libpng напрямую, а используют прослойки типа freeimage. Похоже и до авторов библиотеки дошло - что навороты хорошо, но нужны они очень редко.


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 19-Фев-13 19:07 
> Это нормальный API?

Для таких как вы, видимо, и сделали упрощённый API. И да, это нормалньый API, потому что просто сохранить rgba в png - это хорошо, но нужно это очень редко, и обычно нужна гораздо более широкая функциональность.


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Mihail Zenkov , 19-Фев-13 20:15 
Приведите обычный пример, который применяется чаще (хотя бы не реже), чем просто сжать/распаковать в память/файл,  где нужна большая функциональность, а то сразу что-то даже ничего в голову не приходит.

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено ip1981 , 19-Фев-13 23:46 
Разве вы не написали уже свою функцию my_write_png_file() ?

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Mihail Zenkov , 19-Фев-13 18:30 
> Чтобы поправить сходу было нелегко - такого не было.

Посмотри как gimp-2.7 переходил на новую версию. Я после обновления libpng сам хотел поправить, так как с другими библиотеками никогда проблем не было: максимум что-то переименовать или добавить параметр, а тут ... Хорошо нашел патч от другой версии гимпа и по аналогии поправил да и то кривовато, ибо по хорошему нужно было вникать гораздо глубже.


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено iZEN , 19-Фев-13 15:07 
Каждый раз при выходе новой версии libpng 1.x нужно пересобирать всё ПО, от неё зависящее — факт.

У этой библиотеки принципы модульности и обратной совместимости не в моде.


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено maxst , 19-Фев-13 15:34 
> Каждый раз при выходе новой версии libpng 1.x нужно пересобирать всё ПО,
> от неё зависящее — факт.
> У этой библиотеки принципы модульности и обратной совместимости не в моде.

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


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено iZEN , 20-Фев-13 00:59 
> Недавно вышла 1.5.14 скоро выйдет 1.5.15, вовсе необязательно перепрыгивать на ветку 1.6.x прямо сейчас, да и вообще в ближайшее время.

Когда перепрыгивать, решают мантейнеры портов.


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 19-Фев-13 19:09 
> Каждый раз при выходе новой версии libpng 1.x нужно пересобирать всё ПО,
> от неё зависящее — факт.

Нет. У вас же есть portupgrade/portmaster которые сохраняют старые версии библиотек, и такой хренью как в gentoo можно не страдать пока сильно не захочется.


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено iZEN , 20-Фев-13 00:54 
Совет использовать "pormaster -w" в /usr/ports/UPDATING  для libpng (пакет png) что-то не припомню. http://www.freshports.org/graphics/png/ — каждый раз: "portmaster -r png-" или "portupgrade -fr graphics/png".

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 21-Фев-13 00:45 
> Совет использовать "pormaster -w" в /usr/ports/UPDATING  для libpng (пакет png) что-то
> не припомню. http://www.freshports.org/graphics/png/ — каждый раз: "portmaster
> -r png-" или "portupgrade -fr graphics/png".

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


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 18-Фев-13 23:28 
зачем, когда есть фотошоп?

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено exn , 18-Фев-13 23:32 
>  зачем, когда есть фотошоп?

и не поспориш xD


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 19-Фев-13 05:47 
настолько неожиданно, что даже не толсто

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено б.б. , 19-Фев-13 06:19 
Фотошоп тоже на новую 1.6 обновится, не переживайте. Только узнаем мы об этом через 100 лет из музея компьютерной техники.

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 19-Фев-13 02:26 
Ну вот, опять обновлять всю систему. К libpng призывается всё: Qt, gtk, cairo, pango, fontconfig, freetype - сотни системных компонентов! И все пересобирать. Когда я обновлял систему с libpng 1.4 до 1.5 у Cairo возникла цикличная зависимость. Он не собирался, так как librsvg собран с libpng14, а librsvg не собирался потому что Cairo собран с libpng14. Решил проблему удалением librsvg и сборкой Cairo без него (причём скомпилировалось с поддержкой svg, что удивительно), а затем установкой этой библиотеки заново. В общем, еле обновил, а теперь, видимо, снова придётся сделать это.

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 19-Фев-13 04:50 
> Ну вот, опять обновлять всю систему. К libpng призывается всё: Qt, gtk,
> cairo, pango, fontconfig, freetype - сотни системных компонентов! И все пересобирать.
> Когда я обновлял систему с libpng 1.4 до 1.5 у Cairo
> возникла цикличная зависимость. Он не собирался, так как librsvg собран с
> libpng14, а librsvg не собирался потому что Cairo собран с libpng14.
> Решил проблему удалением librsvg и сборкой Cairo без него (причём скомпилировалось
> с поддержкой svg, что удивительно), а затем установкой этой библиотеки заново.
> В общем, еле обновил, а теперь, видимо, снова придётся сделать это.

А что у вас за недосистема что она не умеет сохранять старые версии библиотек, чтобы и без пересборки всего это всё работало?


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено www2 , 19-Фев-13 06:02 
> А что у вас за недосистема что она не умеет сохранять старые
> версии библиотек, чтобы и без пересборки всего это всё работало?

Может у него LFS ;-) Или FreeBSD, или Arch.


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено masakra , 19-Фев-13 09:06 
Фря умеет сохранять старые либы.

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 19-Фев-13 15:37 
Нет, фряшные порты не умеют.

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено masakra , 19-Фев-13 17:23 
Порты и не должны этого уметь.
potrmaster -w

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Куяврик , 19-Фев-13 23:13 
Как там ваш дядька в Киеве?

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено лох , 19-Фев-13 11:31 
А просто не обновлять libpng что, религия не позволяет? package.mask там или portmaster -x...
И вообще, есть хороший принцип "работает -- не трогай". Одно дело -- разрабы дистров, а другое -- сборище маньяков, обновляющих ради процесса.

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Mihail Zenkov , 19-Фев-13 18:35 
> А просто не обновлять libpng что, религия не позволяет? package.mask там или
> portmaster -x...
> И вообще, есть хороший принцип "работает -- не трогай". Одно дело --
> разрабы дистров, а другое -- сборище маньяков, обновляющих ради процесса.

А переписывать программы при каждой смене libpng разработчикам/мэинтейнерам это значит нормально? А потом в программе приходится липить кучу #ifdef на каждую версию библиотеки ибо не угадаешь, что будет у пользователя.


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 19-Фев-13 19:11 
> А переписывать программы при каждой смене libpng разработчикам/мэинтейнерам это значит
> нормально?

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


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Mihail Zenkov , 19-Фев-13 20:29 
>> А переписывать программы при каждой смене libpng разработчикам/мэинтейнерам это значит
>> нормально?
> Абсолютно. Ленивому ламерью западло, но оно может забандлить libpng любой протухшей версии.
> Иначе либо библиотека ничего бы не умела либо была бы набором
> костылей для сохранения совместимости ради, опять же, ламерья.

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


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 19-Фев-13 20:47 
>>> А переписывать программы при каждой смене libpng разработчикам/мэинтейнерам это значит
>>> нормально?
>> Абсолютно. Ленивому ламерью западло, но оно может забандлить libpng любой протухшей версии.
>> Иначе либо библиотека ничего бы не умела либо была бы набором
>> костылей для сохранения совместимости ради, опять же, ламерья.
> Правильно, зачем хранить собственные костыли в одном месте? Пусть лучше каждый разработчик
> использующий libpng самостоятельно напишет их в своей программе.

зато как значимость библиотеки возрастает...


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 21-Фев-13 00:47 
> Правильно, зачем хранить собственные костыли в одном месте? Пусть лучше каждый разработчик
> использующий libpng самостоятельно напишет их в своей программе.

Нет, костылей в коде быть вообще не должно. Крайнее им место - в портах/пакетах.


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Resonance , 02-Ноя-14 13:45 
лох дело говорит

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 19-Фев-13 04:55 
apng?

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено maxst , 19-Фев-13 09:27 
...добавляется отдельным патчем.

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 19-Фев-13 09:24 
pngOS

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено клоун Стаканчик , 19-Фев-13 10:40 
А какой глобальный смысл в удалении устаревшего кода? Ну сохранили бы со статусом "obsolete" - и фиг с ним. Зачем создавать проблемы тем, чьи проблемы ты должен решать?

"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 19-Фев-13 13:36 
> сохранили бы со статусом "obsolete" - и фиг с ним.
> фиг с ним

Windows way?


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Mihail Zenkov , 19-Фев-13 18:42 
> А какой глобальный смысл в удалении устаревшего кода? Ну сохранили бы со
> статусом "obsolete" - и фиг с ним. Зачем создавать проблемы тем,
> чьи проблемы ты должен решать?

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

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


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 19-Фев-13 19:13 
> Чистить API тоже нужно, но сперва пометить как deprecated и лишь через пол года - год удалять.

Сами это написали, а выше ныли как страшно переписывать под новые версии. libpng так и делают, только времени доют ещё больше.


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Mihail Zenkov , 19-Фев-13 20:21 
>> Чистить API тоже нужно, но сперва пометить как deprecated и лишь через пол года - год удалять.
> Сами это написали, а выше ныли как страшно переписывать под новые версии.
> libpng так и делают, только времени доют ещё больше.

Как раз с libpng и возникают проблемы, ибо программа собраная с ее поддержкой жестко привязывается к конкретной версии. Примеры уже здесь приводили. Ни с одной другой библиотекой такого не наблюдается. Даже glibc проще обновить.

Где это они времени больше дают? Что-то не припомню при компиляции "Warning: xxxx this function depricated", за то вот error'ы как грибы после дождя, если версия не совпала.


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено maxst , 20-Фев-13 08:35 
> Где это они времени больше дают?

Ну вот к примеру что можно найти в libpng-manual.txt в разделе где перечисляются изменения между 1.2.x и 1.4.x:

The functions png_read_init(info_ptr), png_write_init(info_ptr),
png_info_init(info_ptr), png_read_destroy(), and png_write_destroy()
have been removed.  They have been deprecated since libpng-0.95.

The png_permit_empty_plte() was removed. It has been deprecated
since libpng-1.0.9.  Use png_permit_mng_features() instead.



"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Mihail Zenkov , 20-Фев-13 15:35 
Вот только на практике при попытке собрать приложение написанное под API 1.2.x с новой 1.4.x заканчивается кучей ошибок, а не warning'ов.

Я использую D как основной язык, так там API основной библиотеки долгое время был крайне нестабилен - ибо язык очень быстро развивался, но при этом я не ощущал от этого большого дискомфорта, так как реально старый API переставал работать только через продолжительный срок и при каждой компиляции я видел, что функция deprecated и дату/версию в которой ее удалят.


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено maxst , 20-Фев-13 16:28 
> Вот только на практике при попытке собрать приложение написанное под API 1.2.x
> с новой 1.4.x заканчивается кучей ошибок, а не warning'ов.

В ветке 1.2.x ширину изображения можно было получить двумя способами:
info_ptr->width
png_get_image_width()

В ветке 1.4.x прямой доступ убрали как небезопасный и оставили только
png_get_image_width()

Именно это изменение вызвало наибольший дискомфорт: во многих старых приложениях был прямой доступ и видимо разработчики libpng не смогли придумать, как сделать чтобы чтение info_ptr->width некоторое время работало, но предупреждало, что этот подход deprecated...

По сравнению с этим, переход от 1.4.x к 1.5.x был относительно безболезненным, думаю 1.6.x тоже пройдет без особых проблем.


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено Аноним , 21-Фев-13 00:49 
> Как раз с libpng и возникают проблемы, ибо программа собраная с ее
> поддержкой жестко привязывается к конкретной версии. Примеры уже здесь приводили. Ни
> с одной другой библиотекой такого не наблюдается. Даже glibc проще обновить.

И в glibc есть deprecated, и вообще вы сколько бибилотек пользуете? Я постоянно вижу развивающиеся (причём не ценой сотен костылей, а через устаревание старых интерфейсов) API, и это правильно. "Приводите" вы здесь один страдалец, и всё, что характерно, мимо.


"Релиз libpng 1.6.0 с поддержкой упрощённого API"
Отправлено анонимаус , 19-Фев-13 23:56 
Прошлое многочасовое обновление с libpng 1.2 до 1.5 было со слезами на глазах и почти истерикой.