LINUX.ORG.RU

Первый выпуск мультимедийной библиотеки LDL c поддержкой старых систем

 ,


6

2

Представляю Вашему вниманию разработанную мной первую версию мультимедийной библиотеки Little DirectMedia Layer, сокращённо LDL.

Библиотека написана на С++ 98 стандарта, что позволяет компилировать ее начиная с Visual C++ 6.0. Код распространяется на условиях Boost Software License 1.0. Но библиотека не ограничивает программистов в выборе стандарта языка C++, программист может использовать любой современный стандарт языка. Я придерживаюсь философии downgrade — это использование старых устройств и софта в повседневной жизни, когда компании не поддерживают свои же «устаревшие» операционные системы или устройства, увеличивая с каждой новой версией своего продукта системные требования, или прекращают поддержку девайса. Миллиарды устройств по всему миру ежесекундно перемалывают миллиарды инструкций неоптимизированного кода.

В этом году я выступил на конференции С++ 2023 с докладом «Вперед в прошлое, или Разрабатываем фреймворк под Windows 95 в 2023 году».

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

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

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

Возможности библиотеки:

  • поддержка Linux Debian 3 и выше (обеспечена нативная сборка);
  • поддержка Windows 95 — Windows 11;
  • простое API для работы с 2D графикой;
  • загрузка множества графических форматов (bmp, png, tga, jpg);
  • кроссплатформенное API над окнами и событиями ОС;
  • для аппаратного ускорения графики используется OpenGL 1.2 и
  • OpenGL 3.3, присутствует поддержка обработки графики только на ЦПУ, если отсутствует аппаратное ускорение;
  • рендер может быть выбран динамически при загрузке приложения;
  • единое API для всех систем — напиши один раз и компилируй везде!
  • воспроизведение звука;
  • динамическая и статическая линковка.

Планы на будущее:

  • поточное воспроизведение звука;
  • вывод текста с поддержкой библиотеки freetype;
  • дополнительные рендеры Direct3D 9, 10, 11;
  • API для работы с потоками;
  • встроенная поддержка API для работы с сетью;
  • портирование фреймворка на другие платформы: Android, IOS, MacOs.

Ссылки:

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



Проверено: hobbit ()

Я «за любой кипиш, кроме голодовки», поэтому поддерживаю.

А ведь кроме старого x86-железа, есть ещё современное слабенькое экологичное ARM-железо, которое не шумит и довольствуется пассивным охлаждением (например, Raspberry Pi по 3-е поколение включительно, 4-му, говорят, уже пропеллер нужен). Некоторые, в том числе на ЛОРе, десктоп для этом делают, но мощности хватает не для всех задач.

Не было мысли портировать свои наработки на подобную технику?

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

Не было мысли портировать свои наработки на подобную технику?

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

Главный камень преткновения это время и единственный коммитер в моём лице:) Уверен, что со временем руки дойдут и до указанной техники.

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

зочем

Мне нравится старое железо и софт. И хотелось обеспечить возможность поддержки такого железа. Ещё большой плюс, это тестирование библиотеки на таком древнем железе. Сразу видны где, что тормозит и где следует оптимизировать.

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

видимо затем, что со времен winXP, gnome2 и kde3 нормальному человеку даже смотреть на это мракобесие вызывает рвотный рефлекс, не то что - использовать или участвовать

некоторые даже по это причине на макОС свалили ;)

sloan ★★
()

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

Хорошо бы добавить в планы использование более современных фич стандартов.
Например, для SDL мне очень нравится Centurion.

Centurion is not just a wrapper library! A lot of effort has been put into improving the SDL APIs by utilising the full power of modern C++17 and C++20. Which has led to APIs that are far more expressive and intuitive to use, compared to plain C.

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

слабенькое

3-е поколение

Угораешь что ли? Там двухядерный проц на 1.2GHz гиг оперативы и GPU. На нем видео можно кодировать.

liksys ★★★☆
()

«Вперед в прошлое, или Разрабатываем фреймворк под Windows 95 в 2023 году».

Я тут обнаружил вот такую штуку: https://github.com/vxiiduu/VxKex но не знаю насколько это все реально работает, не изучали вопрос?

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

Хорошо бы добавить в планы использование более современных фич стандартов. Например, для SDL мне очень нравится Centurion.

Отлична идея, спасибо.

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

Я тут обнаружил вот такую штуку: https://github.com/vxiiduu/VxKex но не знаю насколько это все реально работает, не изучали вопрос?

Нет не изучал. Но посмотрю, что это за зверь. Всегда интересно посмотреть, как, что реализовано и необходимое утянуть в проект.:) Конечно с упоминанием авторства.

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

Угораешь что ли? Там двухядерный проц на 1.2GHz гиг оперативы и GPU. На нем видео можно кодировать.

По современным требованиям софта к железу, это вообще микроконтроллер:)

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

Проект не мой, привлек уровнем дичи )

Данная библиотека тоже примерно на том же уровне дичи:)

Шёл 2023 год… И выходило обновление библиотеки для windows 95 и debian 3. На практике не требуется титанических усилий для поддержки старых систем.

JordanCpp
() автор топика

Библиотека написана на С++ 98 стандарта

Так себе «преимущество». В новых c++ много всего сделано, чтобы была возможность писать более надежные программы. Да и работа с потоками там есть прямо в стандартной библиотеке.

Правильнее было бы нацелить компилятор с поддержкой новых c++ на старые версии ОС. Не уверен что там с вендой, а с линуксами это вполне реально.

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

Так себе «преимущество». В новых c++ много всего сделано, чтобы была возможность писать более надежные программы. Да и работа с потоками там есть прямо в стандартной библиотеке.

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

Правильнее было бы нацелить компилятор с поддержкой новых c++ на старые версии ОС. Не уверен что там с вендой, а с линуксами это вполне реально.

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

JordanCpp
() автор топика

Рад, что прошёл фейс контроль linux. org.ru:)

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

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

Мне нравится старое железо и софт.

говноедство. я понимаю, если железо специализированное/экзотическое типа ХОТЯ БЫ Alpha, но пылесборники с Чикагой…

никому не нужно.

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

Под «нацелить компилятор» я подразумеваю использование инструментов вроде такого: https://crosstool-ng.github.io/docs/toolchain-construction/ . «Целью» в случае линукса является связка из старой версии glibc и (возможно) старой 32-битной архитектуры. Затем получившимся кросс-компилятором придётся собрать необходимые библиотеки: через что ты там доступаешься до окон, opengl, звука, и тд. В результате получится окружение из современного компилятора и (возможно старых) библиотек, и написанная на современном c++ программа скомпилируется в бинарник для старой ОС.

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

говноедство. я понимаю, если железо специализированное/экзотическое типа ХОТЯ БЫ Alpha, но пылесборники с Чикагой… никому не нужно.

Не соглашусь, не нужное вам! = ненужное всем. Есть не мало ресурсов к примеру old-games.ru где используют старое железо и дорабатывают старые игры. Это всё фан, и на alpha тоже фан. Так чем это хуже?

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

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

надо портировать под нормальные системы.

Под нормальные системы, библиотека уже работает и в будущем планируется увеличивать количество как нормальных, так и не нормальных по вашему систем. Вас задевает сам факт, что кто то в 2023 что то делает для обеспечения работоспособности на windows 95?

JordanCpp
() автор топика
Ответ на: удаленный комментарий

Это все очень пригодится в системах на базе libreboot. Задешево можно взять там с поддержкой только старое что-нибудь, вроде thinkpad t60 и так далее. Вообще есть применения.

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

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

Только моя заинтересованность. Нравится мне.

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

причем тут чикага95 и дебиан сардж?????????????????????????????????????????????????????????????????????????

Потому что обеспечение их поддержки стоит мало строчек кода. И мне интересно окунуться в систему давно минувших дней.

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

достойно похвалы окунание, скажем, в технологии производства кино-процесса каких-нибудь мохнатых годов, или первопечатников, я не знаю.. но не это. Эти системы просто ширпотребное гумно. Цифровое старьё != реальное, физическое, аналоговое.

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

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

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

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

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

достойно похвалы окунание, скажем, в технологии производства кино-процесса каких-нибудь мохнатых годов, или первопечатников, я не знаю.. но не это. Эти системы просто ширпотребное гумно. Цифровое старьё != реальное, физическое, аналоговое.

Я не понимаю, чего вы от меня добиваетесь. Я вам честно ответил о своей мотивации. Она вам не по душе? Ну такое часто бывает в реальном мире.

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

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

в недрах Некрософт родилось либо ГОВНО либо НЕ СВОЁ. За исключением, пожалуй, Экзеля. Он уже в древности умел многое.

Люди сидели на говно клоне CP/M (хреновом ДОСе, даже далеко не лучшем ДОСе из существовавших) и нахлабученной сверху венды3.11-98, дико ублюдочной системы в целом. Пока Дейв Каттлер и его команда из DEC не реализовали им дековский прожэкт и Билли не выпустил его под названием ВыньЭнТи.

а люди покланяются говну, даже вон кодят для него. Но это пофиг, каждый др***т как он хочет. Everyone gets his kicks some way.

но говорить что это круто - просто тупо.

mrjaggers
()
Ответ на: удаленный комментарий

люди тупые. неизлечимы.

Ну а что делать со старыми железками, которые ещё работают? Например, Чем заменить windows98

Просто выкинуть? Выкидывать работающие вещи - аморально, потому что экология, потреблядство, и всё такое.

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

Ну а что делать со старыми железками, которые ещё работают?

пусть работают. Если это какой-нибудь VAX VMS в ядерном институте.

остальное сжэчь.

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

А обязательно линукс там использовать? Есть же minix, это ОС созданная преподователем Линуса. Можно посмотреть совместима ли она по железу, вроде там микроядро должно меньше есть.

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

вроде там микроядро должно меньше есть

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

«Микроядро – потеря perfomance»! (акад. Иванников, OS Day, 2014 год). Не догма, конечно, но за плюшки микроядра надо платить организацией связи между ним и сервисами разными.

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

Это только у современных гуев такие требования, как эмбед оно отлично работает.

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

ОС созданная преподователем Линуса

Не преподавал он ему никогда. У Линуса была его книжка по осям и сам миникс.

liksys ★★★☆
()

Автор, у меня есть оддна интересная музейная пепяка, работающая на солярисе 2.5 и/или современной netbsd. Могу что-нибудь на ней повертеть, но нужна поддерка спарка.

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

Спасибо, добавлю в бэк лог. Сначала нужно портировать на виртуалке, а потом уже протестировать на вашем ноутбуке. Как будет порт, обращусь к вам.

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

остальное сжэчь

А начать лично с тебя, согласен?)))

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