Главная мысль заключается в том, что на успех любого человека в этом мире влияют не только персональные качества, такие как одаренность или способность к чему-то, но и внешние обстоятельства. На первый взгляд, ничего нового и особенного в этом нет, но это пока вы не стали подмечать некоторые критерии как сам автор.
Да вы что? Зумеры начинаю открывать для себя Маркса? Оказывается в малиновых штанах можно сразу родиться и передать их своим детям и внукам:)
Идея понятна. Вместо отдельного процесса электрон с движком хрома, будет запускаться вкладка в браузере с программой. Сути то это не меняет, для того, что бы вывести на экран текст, потребуется загрузить страницу, дёрнуть js либу и т.д Грубо говоря это будет оффлайн страница.
Потому, что не будет больше у вас быстрых и маленьких программ. Вот почему ха-ха-ха
Это здорово. Я все как то намеревался разобраться в данной теме, но дальше кнопки никогда не уходил. Что бы именно с нуля рисовать все контролы и писать их логику.
Но я не вижу продолжения. Нет аудитории , понимающей и принимающей задумку.
В первую очередь это интересно мне. Это мое желание рассказать и показать. И я понимаю и принимаю, что это скорей всего интересно паре десятков человек. Я не создаю платный контент, просто пилю статьи в удовольствие. Поэтому мне не нужны подписчики в ТГ, на Ютубе, что бы впаривать им рекламу. Меня это полностью устраивает.
И у меня нет таймингом и сроков. Захотел написал одно, потом другое.
Идея понятна сразу - уйти от тухлятины вроде многотомных stdlib-ов с их несовместимостями в разных версиях винды. Сделать lightweight + zero dependency в бинарниках.
Ненормальность в том, в каждом процессоре уже сидит тензорная алгебра, а мы всё юзаем BRUSH.
Это только начало. Этот режим нужен для совместимости со старыми windows. Потом будет режим рисования в буфер, потом opengl и directx. Поверх 2d абстракции с единып api. В этом цель.
Это не требуется. Код будет собираться и быть совместимым и со стандартным STL и libc идущий в поставке компилятора. Но, что бы добиться минимального бинарника на всех платформах, дополнительно пишу свои совместимые прослойки.
В следующих статьях я буду использовать для сборки под старые системы visual C++ 6.0, а может ещё древнее версию. Под старые версии linux, gcc 3. Куда уж легаснее?
Вы все правильно пишите. И у меня уже есть похожий проект в репе. Где я пишу все на С++ и полагаюсь на поставляемые libc. И как одна из опций сборки это будет работать. Но мне хотелось бы обеспечить поддержку именно своей версии минимальной libc и STL. Уже успешно доковырял linux версию. Осталось сделать malloc и free, на основе mmap и unmap. Системные вызовы linux уже вызываются. Можете посмотреть в репе. Делаю по примерам в интернете.
Да и я много кода скопирую и для себя осмыслю. И в статье все шаги опишу. Мне интересно как оно все под капотом работает. Интересно же.
И стало интересно, а возможно ли добиться примерно такого же размера. Но на С++ и STL. Конечно настолько малого бинарника не получится, но хотя бы приблизиться получится.
Это было долго, но мы справились!
Мы написали (очень простую) программу с графическим интерфейсом на чистом ассемблере, без каких-либо зависимостей и уложившись в 600 строк кода.
Как далеко мы можем зайти в оптимизации бинарника?
C отладочной информацией: 10744 байт (10 Кб)
Без отладочной информации (stripped): 8592 байт (8 Кб)
С оптимизациями stripped and OMAGIC (--omagic это ключ линковщика, из рукводства: Set the text and data sections to be readable and writable. Also, do not page-align the data segment): 1776 байт (1 Kб)
Вообщем вот такая программка с интерфейсом размером в 1 Кб.
Коррупция есть там где есть деньги. Ну да, логично.
Да вы что? Зумеры начинаю открывать для себя Маркса? Оказывается в малиновых штанах можно сразу родиться и передать их своим детям и внукам:)
Идея понятна. Вместо отдельного процесса электрон с движком хрома, будет запускаться вкладка в браузере с программой. Сути то это не меняет, для того, что бы вывести на экран текст, потребуется загрузить страницу, дёрнуть js либу и т.д Грубо говоря это будет оффлайн страница.
Потому, что не будет больше у вас быстрых и маленьких программ. Вот почему ха-ха-ха
Историю браузера, тоже почистили?:)
Уже добавил в закладки. Надо будет посмотреть. Спасибо.
Это здорово. Я все как то намеревался разобраться в данной теме, но дальше кнопки никогда не уходил. Что бы именно с нуля рисовать все контролы и писать их логику.
В первую очередь это интересно мне. Это мое желание рассказать и показать. И я понимаю и принимаю, что это скорей всего интересно паре десятков человек. Я не создаю платный контент, просто пилю статьи в удовольствие. Поэтому мне не нужны подписчики в ТГ, на Ютубе, что бы впаривать им рекламу. Меня это полностью устраивает.
И у меня нет таймингом и сроков. Захотел написал одно, потом другое.
Да именно так.
Это только начало. Этот режим нужен для совместимости со старыми windows. Потом будет режим рисования в буфер, потом opengl и directx. Поверх 2d абстракции с единып api. В этом цель.
Я сейчас на windows простенькое окно вывожу. Без обработки ввода. 4,5 КБ для 32 бит и 5,5 КБ для 64 бит.
Потом это все я оберну в абстракции единого API для linux и windows.
Это не требуется. Код будет собираться и быть совместимым и со стандартным STL и libc идущий в поставке компилятора. Но, что бы добиться минимального бинарника на всех платформах, дополнительно пишу свои совместимые прослойки.
В следующих статьях я буду использовать для сборки под старые системы visual C++ 6.0, а может ещё древнее версию. Под старые версии linux, gcc 3. Куда уж легаснее?
Почти допилил linux версию, осталось реализовать malloc и free. Начал пилить графику.
Приходите в кафе, открываете сумку, ставите на стол эту бандурину.
Люблю пописать асм под 286 за чашечкой кофе:)
Спасибо за статью, интересно.
Ещё один аргумент за С++, это нормальная ООП абстракция типизированная на шаблонах. А не как в glibc.
Вот пример. Работает на windows 32/64, linux 32/64, ms dos 16/32.
https://github.com/JordanCpp/LDLHOL
Вы все правильно пишите. И у меня уже есть похожий проект в репе. Где я пишу все на С++ и полагаюсь на поставляемые libc. И как одна из опций сборки это будет работать. Но мне хотелось бы обеспечить поддержку именно своей версии минимальной libc и STL. Уже успешно доковырял linux версию. Осталось сделать malloc и free, на основе mmap и unmap. Системные вызовы linux уже вызываются. Можете посмотреть в репе. Делаю по примерам в интернете.
Да и я много кода скопирую и для себя осмыслю. И в статье все шаги опишу. Мне интересно как оно все под капотом работает. Интересно же.
Только С++, на С программировать желания нет.
Мне понравилась эта статья. Приложение X11 на ассемблере.
https://habr.com/ru/articles/840590/
И стало интересно, а возможно ли добиться примерно такого же размера. Но на С++ и STL. Конечно настолько малого бинарника не получится, но хотя бы приблизиться получится.
Вывод на экран графики. Примитивы, картинки. Опционально загрузчик разных форматов.
Возможно плюсующим нравится?