То, что вы описываете у Ruby — это метаобъекты, а не прототипное наследование. В первом случае у нас есть чертежи объектов — метаклассы, и есть изготовленные по чертежам объекты. Во втором случае любой объект можно превратить в шаблон класса. Разница как между промышленной сборкой и размножением живых организмов ;)
Данные в PNG всегда сжимаются с помощью Deflate/Inflate (который используется, например, в zip), причём не построково. Как тогда вы собираетесь разбивать «обычно по строкам» то, что выплёвывает zlib, который, во-первых, сам буферизует (сжимает-то блоками), во-вторых, выплёвывает куски переменной длины? ;) Ну и тратить 4 байта на каждую строку — слишком расточительно :)
На самом деле «обычно» размер IDAT — это размер буфера для результатов zlib — сколько не жалко. В далёком 2000-м году, когда Java-апплеты ещё были в моде, но поддержки PNG в зоопарке установленных у пользователей версий JVM ещё не было, в самописной библиотеке для чтения и записи PNG я выделил для буфера целых 32Кб :) При том хитрая реализация чтения могла распаковывать в ограниченном буфере IDAT любой длины.
Разница между Цейлоном и Шри-Ланкой или между Северной Родезией и Замбией, согласитесь, гораздо больше, чем между Белоруссией и Беларусью. По сравнению с ними требование использовать только «Беларусь» выглядит таким же занудством, как требование к англичанам и американцам использовать слово «Moskva», а не «Moscow». А ещё вспоминается анекдот «Павло, слыхал, як москали наше пыво кличут?» (за точность воспроизведения украинского языка не ручаюсь).
Только у этих серверов будут ограничения. Например, полоса 10Мбит, а прямо в договоре будет прописано, что под угрозой отключения — никаких радиостанций, видеосайтов, краулеров и т.п.
Есть два решения: правильное и компромиссное. Правильное — не ходить на такие сайты (а зачем они ограничивают длину пароля значением, меньшим 128? Они что, хранят пароль в базе? Не думаю, что им сложно посчитать хэш от 128 символов.). Компромиссное — использовать на таких сайтах исходный пароль меньшей длины. Исходный меньшей длины — значит и результат меньшей длины (плюс-минус константа). Речь идёт о PwdHash, конечно, мы же его обсуждаем?
function Test () { ... }
Test.prototype = любой_объект;
Так рассматривать, наверное можно, но в вашем комментарии выше вы писали про «наоборот» — метаклассы как прототипы, а не прототипы как метаклассы.
На самом деле «обычно» размер IDAT — это размер буфера для результатов zlib — сколько не жалко. В далёком 2000-м году, когда Java-апплеты ещё были в моде, но поддержки PNG в зоопарке установленных у пользователей версий JVM ещё не было, в самописной библиотеке для чтения и записи PNG я выделил для буфера целых 32Кб :) При том хитрая реализация чтения могла распаковывать в ограниченном буфере IDAT любой длины.
Руки прочь от русского языка, короче.