Опубликован выпуск операционной системы MenuetOS 1.70, разработка ядра которой ведётся полностью на ассемблере. Сборки MenuetOS подготовлены для 64-разрядных систем x86 и могут быть запущены под управлением QEMU. Сборка системы занимает 1.4 МБ и сформирована в виде образа дискеты и iso-образа для записи на CD (поддерживается запуск в VirtualBox). Исходный код проекта Menuet64 распространяются под ограничивающей лицензией, требующей согласования любого использования в коммерческих целях, а Menuet32 - под лицензией GPL...Подробнее: https://www.opennet.ru/opennews/art.shtml?num=64549
Правильно ли я понимаю, что развивая совместимость с линукс-приложениями, можно получить (в будущем) минимально пригодную для использования систему?
Нет, потому что драйверов не будет.
Будут, ещё как
сам лично напишешь?
Подика думает, что нейронки ему запилят.
Ага, именно
В каком будущем, спустя тысячу лет?
Как это понимать? 1,4 мегабайта?! Как такое возможно? Многозадачность, сетевой стек, бортовой браузер. Нет, это какая-то ошибка.
Эти ваши C, C++, Rust завели тренд на большие бинарники, а тут просто FASM :)
Ну не надо, у си достаточно миниатюрный код, только оптимизации . Раст конечно вывел раздутые бинари на новые высоты, ещё бы они не фризились на мютексах в рантайме (но я заметил с оптимизациями меньше тормозит и в актуальных версиях вообще не заметно).
Вывод текстовой строки в консоль, как объем исполняемого файла получится?))
Без проблем можно не включать в файл ничего, дёргать сисколы, и будет тот же си.
Два чая вам! :)
> Эти ваши C, C++, RustСудя по вашему заявлению, вы не имеете опыта разработки ни на одном из упомянутых вами языков программирования. Поэтому сообщаю, что собирая аналогичный код, например, на C++ для операционных систем Linux и Windows компилятором GCC абсолютно с теми же оптимизациями, для Linux размер исполняемого модуля будет почти в 10 раз меньше.
* без учёта размера libgcc, libc и код инициализации глобальных переменных из STL, TLS и т.п.
Это возможно, более того, это так и есть!
Нет не ошибка, 1.4 МБ. И даже, помимо браузеров и тестовых редакторов, в комплекте игры типа пэкмен, косынка и так далее.
>Как это понимать? 1,4 мегабайта?!Ты же, наверняка, знаешь историю и что у первых коммерческих компутеров было 32/64 kb памяти и несколько mb жёсткий диск и они тем не менее решали коммерческие задачи? Тут абсолютно такая же история.
>Как такое возможно?Вы обманулись
>Многозадачность, сетевой стекЭто ещё под ms-dos-ом было, правда в форме разных дополнений.
>бортовой браузерТам нет полноценного браузера. А тот огрызок, который там есть, не пригоден для практического применения.
Это просто вы начинаете на самом начальном уровне понимать весь эпический хтонический ужас состояния современного софтостроения, который начался не вчера и даже не 10 лет назад, и "развивается" в этом направлении ускоряющимися темпами, в том числе благодаря так называемому ИИ.
Примерно это обычно выглядит так:
- есть ТЗ - Построить уличный сортир на дачном участке, на одно очко, с гвоздём под рулон бумаги.
- обычная реализация: Некая конструкция масштаба "Москва-Сити", слепленная из говна и палок, многослойная, уходящая в небеса, качающаяся от дуновения ветра, внутри со стаями ворон в продуваемом каркасе, крысами-мутантами и тараканами в затопленных подвалах, уходящих на много этажей вниз, в зловонные пещеры. Всё это требует большого штата обслуги для непрерывной еженедельной подмотки синей изолентой и подмазкой термосоплями, чтобы не развалилось. Потребляет половину выработки современной АЭС и триллиарды оплаты занимаемой территории. Накрыто сверху чехлами с детской мазнёй "красивого интерфейса", которые треплет ветер.
И самая жуть - что всё вышенаписанное НЕ художественное преувеличение, а совершенно точная аналогия.
А такие проекты как minuetOS - это просто НОРМАЛЬНО НАПИСАННАЯ ПРОГРАММА, как она должна быть.
Доклад закончил
Уровень ыкспертов как всегда велик
>А такие проекты как minuetOS - это просто НОРМАЛЬНО НАПИСАННАЯ ПРОГРАММА, как она должна быть.Это кем нужно быть, чтобы в качестве примера нормальной программы приводить Menuet OS? Вы на скриншоты посмотрите: растовый шрифт без сглаживания. Это в 2026 году. Графика не дотягивает даже до 9x винды. Про аппаратное ускорение, поддержку юникода, и кучи других вещей лучше вообще не вспоминать. И да, всё это жёстко прибито к процессору и для условного arm придётся писать с нуля. Зато на 1.4 Мб.
>- есть ТЗ - Построить уличный сортир на дачном участке, на одно очко, с гвоздём под рулон бумаги.Дауншифт предельной степени. Хотя нет, не предельной, в Индии без сортиров живут.
То есть если вам выдали ТЗ, вы кладёте на него болт и строите в углу участка в 6 соток вместо сортира - ТРЦ с кинотеатром?
Ловите бригадира индусских обкуренных быдлокодеров с почасовой оплатой (На самом деле нет, не ловите) Мы вам перезвоним (тоже нет, идите разваливать другую компанию)
Видимо готовы пойти в минуетОС и сказать им, что готовы добавить сглаживание шрифта, только дистр станет после вашей помощи уже не 1,4 Мб, а 1,4Гб
Сходите, скажите, их ответ вам тут можно не публиковать, он и так всем заранее очевиден
> добавить сглаживание шрифта, только дистр станет после вашей помощи уже не 1,4 Мб, а 1,4ГбСглаживание шрифтов добавит дистру 1.4 гига размера? Опеннетные эксперты пробивают новые днища...
Ну так это же вы начали топить за нормальные программы на три порядка большего размера, но зато со сглаживанием!
Я то тут при чем?)
> программы на три порядка большего размера, но зато со сглаживанием!
> Я то тут при чем?)При том, что ты несешь чушь о дополнительных 1.4 гига, которого требует сглаживание шрифтов.
>Видимо готовы пойти в минуетОС и сказать им, что готовы добавить сглаживание шрифта, только дистр станет после вашей помощи уже не 1,4 Мб, а 1,4ГбЫксперт прочитал только про сглаживание шрифта и проигнорировал остальное, про юникод, аппаратное ускорение и так далее?
>То есть если вам выдали ТЗ, вы кладёте на него болт и строите в углу участка в 6 соток вместо сортира - ТРЦ с кинотеатром?Шанс увидеть ТЗ из разряда "нужен сортир с выгребной ямой" околонулевой. А если вдруг такой человек и попадётся, то с него нужно будет требовать оплату в десятикратном размере, поскольку завтра он придёт с новыми хотелками, и крайне сжатыми сроками, совершенно не понимая, а в чём проблема приделать функционал за пять минут.
>Ну так это же вы начали топить за нормальные программы на три порядка большего размера, но зато со сглаживанием!Возьмите tinycore linux и эта поделка уже не будет такой впечатляющей. А тперь поставьте tinycore себе в качестве основной системы и попробуйте на ней поработать. Тут вам архив zip, тут tar.gz, тут jpg, тут png, тут wifi и так далее. После года беготни за каждым мегабайтом и горящими сроками, вам уже будет всё равно, занимает программа 1 Мб или 10.
>>А такие проекты как minuetOS - это просто НОРМАЛЬНО НАПИСАННАЯ ПРОГРАММА, как она должна быть.
> Это кем нужно быть, чтобы в качестве примера нормальной программыТак он говорил нормально НАПИСАННАЯ программа, так что все норм. Про юзабельность и элементарный здравый смысл речи не было, ведь персонаж этим minuetOS не пользовался и пользоваться не собирается.
Вот пример комментария здорового человека, отвечающий оппоненту, а не своим голосам в голове))
> эпический хтонический ужас состояния современного софтостроения
> А такие проекты как minuetOS - это просто НОРМАЛЬНО НАПИСАННАЯ ПРОГРАММА, как она должна быть.Да, но пользоваться этим minuetOS ты лично, конечно же, не будешь. Вместо этого навалишь экспертизы из-под Firefox и Линукса, порожденными тем самым "хтоническим ужасом состояния современного софтостроения".
Пользоваться этим Минуэтом будет примерно никто, что вполне очевидно
Даже меньше, чем эмуляторами спектрумов и плейстешенов для микроконтроллеровМинуэт был назван НОРМАЛЬНОЙ ПРОГРАММОЙ в плане того, что там не используется "хтонический ужас" типа использования стапицот вложенных уровней абстракции и виртуализации на пятнадцати встроенных скриптовых языках только для того, чтобы нарисовать кнопку ПУСК, когда нажатие на неё запускает огромный сноп ресурсоёмких процессов, для вменяемого исполнения которых нужна вычислительная мощность десятка компов, на которых раньше прекрасно работала целая Win-98 со всеми приложениями
Но конечно в ответ надо писать какую то за уши притянутую галиматью про несглаженные шрифты
Если они себе поставят задачу сделать сглаживание в Минуете, то уверен, что они это сделают без десятков тысяч строк кода, как это сейчас модно почти везде
Какие задачи там ставятся в приоритет - это вопрос совершенно отдельный. К качеству собственно программирования он не имеет никакого отношения
> Минуэт был назван НОРМАЛЬНОЙ ПРОГРАММОЙ в плане того, что там не используется "хтонический ужас" типа использования стапицот вложенных уровней абстракцииНо сама программа тоже нигде и ни кем не используется, так что непонятно, как к этому можно применить критерий "нормальный" (который, к слову, чисто по определению подразумевает нечто наиболее типично и распространенное).
Людям фиолетово, сколько там абстракций и на каких языках. А вот если поделие не поддерживает никакого железа и даже HTTPS открыть не может - это неюзабельный мусор, и плевать, сколько он там весит и насколько оптимально написан, ибо толку от этого ноль.
>Минуэт был назван НОРМАЛЬНОЙ ПРОГРАММОЙ в плане того, что там не используется "хтонический ужас" типа использования стапицот вложенных уровней абстракцииПрактика показывает, что когда такие ыксперты видят systemd или fish, то вместо того, чтобы понять зачем тому-же shell-у нужна многоядерность, или зачем в systemd нужно столько всего, они просто начинают по кругу повторять "нинужна" как мантру.
>и виртуализации на пятнадцати встроенных скриптовых языках только для того, чтобы нарисовать кнопку ПУСК, когда нажатие на неё запускает огромный сноп ресурсоёмких процессовВо-первых, то, что вы описываете, отсуствует даже в GNOME, во-вторых, есть как минимум lxqt. В-третьих, было бы очень интересно посмотреть вашу реализацию.
>на которых раньше прекрасно работала целая Win-98 со всеми приложениямиПамать по адресу 0x00000002 не может быть read
Произошла ошибка: нет ошибки
>Но конечно в ответ надо писать какую то за уши притянутую галиматью про несглаженные шрифтыДавайте, покажите мне юникод, ipv6, контейнеризацию, COW и кучу других вещей в 9x винде. Сможете?
>Если они себе поставят задачу сделать сглаживание в Минуете, то уверен, что они это сделают без десятков тысяч строк кода, как это сейчас модно почти вездеСделают когда, через тысячу лет? А потом ещё через тысячу юникод? Или на юникод уйдёт пять тысяч лет? Эта подделка лишь чуть чуть младше Linux и старше Android. Но, в то время как Android занял кучу карманов, Menuet так и остаётся технодемкой. Если брать условный OpenBSD, то его вполне можно поставить на одноплатник и использовать в качестве веб сервера.
> совершенно точная аналогияага, деревынный аналог фотонного двигателя.
Любая технология начиналась с гов..а и палок, потому что больше ничего не было
> Любая технология начиналась с гов..а и палок, потому что больше ничего не былоНу так то смотреть на музей открытия графена. Что-что, нанотехнологиям дал зеленый свет ОБЫЧНЫЙ СКОТЧ?! Которым вот прям атомарно-тонкие слои и отдирали.
Жду когда появится ОС, исходники которой это ИИ промпты.
Операционные системы уже давно не нужны, ты можешь писать свои промпты напрямую в ии
А потом придет Морфиус и спасет нас от этой Матрицы и мы выдернем штекер из своей головы
Так не жди, когда это станет мейнстримом. Уволься со своей галеры прямо сейчас и прямо в таёжные егеря.
> Так не жди, когда это станет мейнстримом. Уволься со своей галеры прямо
> сейчас и прямо в таёжные егеря.Я безработный. Сам иди в свои таёжные лагеря - господ из ГУР там уже заждались. Хитрые какие.
А можно ли переписать Windows XP через ИИ? Исходники есть, но они нелегальные. Один ИИ читает исходники и пишет по ним спецификацию, другой не зная исходников реализует её. Третий тестирует на то, что оно ведёт похоже.
Может быть для Wine подобных вещей, где есть явная спецификация или уже существующий API ИИ подойдёт несколько лучше и у нас есть явный критерий оценки в виде совместимости и т.п.
Можно всё что угодно. Вопрос в трудозатратах и времени.
KolibriOS есть же, форк.
>KolibriOS есть же, форк.Отличная вещь без сарказма! Но для победного ществия не хватает 1 вещи. Дарю идею:
Запилить уже опрес монитора по EDID с автовыбором видеорежима.
Без этого я не смог запустить на реальном железе. В остальном, повторяю - замекчательная вещь.
У замечательных вещей есть одна проблема - они не работают.
>У замечательных вещей есть одна проблема - они не работают.Замечательные вещи как раз работают, только область применения таких вещей всегда узкоспециализированная. Например, огнемёт - замечательная вешь, но используется только в определённых ситуциях. Так и тут.
В каких ситуациях используется менует?
> В каких ситуациях используется менует?Очевидно в таких же как Linux в 1991 году.
То есть ни в каких.
>> Отличная вещь без сарказма! Но для победного ществия не хватает 1 вещи. Дарю идею:
>> Запилить уже опрес монитора по EDID с автовыбором видеорежима.
>> Без этого я не смог запустить на реальном железе. В остальном, повторяю - замекчательная вещь.Для студентов самое то, но в учебном процессе как правило требуется новшество. А так как на западе это уже сделали, то новшеством это не является почему-то, хотя специалисты которые в таком разбираются наверно где-то нужны.
Хотя вот если поискать, какую-то документацию по EDID можно и найти:
- VESA ENHANCED EXTENDED DISPLAY IDENTIFICATION DATA STANDARD https://glenwing.github.io/docs/VESA-EEDID-A2.pdf
- Understanding EDID - Extended Display Identification Data
https://media.extron.com/public/download/files/articles/unde...
- EDID Format Guideline https://media.extron.com/public/download/files/articles/unde...
- Display Technology, VESA and EDID https://www.x.org/wiki/Events/XDC2007/Notes/Xorg_2007-EDID-J...И это только быстрый поиск. Насколько я понял, то последняя версия 1.4. Первая ссылка насколько понимаю спецификация для ознакомления всего-то на 91 страницу. Удачи в быстром написании на коленке!
Вообще если студенту с 1 курса поставить какую-либо цель типа такой, то можно где-то через 4 года что-то и получить. А тут сразу задача подразумевает: разобраться замечательно в fasm, уметь читать спецификацию, разобрать исходный код Kolibri. Соответственно более широкой целью может быть создание своей видеокарты под Linux, что подразумевает умение писать драйвера под Linux.
>Без этого я не смог запустить на реальном железе. В остальном, повторяю - замекчательная вещь.Замечательная вещь, которая у тебя не запустилась, которой ты не пользуешься, в которой нет нужного софта).
ну колибри 32 битный а миньет 64 бит
Это потому что код колибри украли энтузиасты, сами написать они ничего не способны понятное дело. Впрочем, было даже юзабельно.
>энтузиастыКолибри украли энтузиасы, у MenuetOs, а MenuetOs, украл у коляна, а Колян украл у Microsoft).
Объясните сценарии использования такой ОС?
Домашний
"домашний" - это не сценарий. Сценарий - это гейминг, работа с документами, разработка.
Тогда зыринг, сценарий?
Зыринг чего? Пакмана и значков на экране? Круто.
Libreoffice или есть что на Асме его заменяющее?
> есть что на Асме его заменяющее?нет, и никогда не будет.
Текстовый редактор "Слово и Дело"
Хобби
Хобби должно предполагать какой-то смысл. В чем смысл запускать менует? Что там делать?
Смысл в том чтобы участвовать в разработке сей ОС как хобби
Вопрос был про сценарий использования, а не разработки.
Нет, вопрос был в смысле хобби. А смысл хобби в том чтобы разрабатывать эту ОС
Этим "хобби" занимаются 5 человек в мире (или сколько там разрабов? 1?). Так чё, сценариев использования менуета кроме разработки менуета больше нет?)
Даже если и нет других сценариев, то что с того? Люди не имеют теперь права на редкое хобби?
Имеют. Просто вопрос был про сценарии. Ответ на него - сценариев нет.
Смысл хобби в том чтобы входить в некое подобие транса. Отвлечься от всего и сфокусироваться на одном. Кому в этом спорт помогает, кому гейминг, кому косяки и таблетки, а кому и программрование. Кто струны перебирает, кто читает, кто фильмы смотрит. Есть люди, у которых хобби - строчить анонимные комментарии на опеннете.
Так я и спрашиваю - в чем смысл хобби с менуетом? Что вы с ним делаете? Запускаете раз в месяц и входите в транс?
Написано же - хобби. Кто-то получает удовольствие от процесса написания оси на ассемблере. Вот он и пишет. Хобби не предполагает (но и не исключает) получения какой-то прямой выгоды, тем более для третьих лиц. Могу предположить что есть и люди, у которых хобби - эксперименты, в том числе с разными осями и/или железом. Повтыкал, покрутил, всяко лучше чем гамать или в подворотне бухать - гораздо более распространенное хобби, между прочим
Если у тебя где-то заволялся комп, в котором только 100 мегабайт, а делать на нем вещи хочется
Поставить дос, нортон и дум.
Какой ДОС? 100MB это дофига памяти, достаточно для любых задач, без сарказма. Windows NT 4.0, которая уже имела в себе всё, что необходимо для нормальной многозначной операционной системы, запускалась на 16 MB RAM, а на 32 MB уже просто летала.
Это нынешние требования и нынешние программы - деградация индус-трии, увы.
> Какой ДОС? 100MB это дофига памяти, достаточно для любых задач, без сарказма.
> Windows NT 4.0, которая уже имела в себе всё, что необходимо
> для нормальной многозначной операционной системы, запускалась на 16 MB RAM, а
> на 32 MB уже просто летала.
> Это нынешние требования и нынешние программы - деградация индус-трии, увы.Как странно...
> Какой ДОС? 100MB это дофига памяти, достаточно для любых задач, без сарказма.
> Windows NT 4.0, которая уже имела в себе всё,Теперь попробуй открыть в этом современный, блин, вебсайт... :\
хотеть не вредно, заведи жену и устройся на работу
> хотеть не вредно, заведи жену и устройся на работуСудя по многостраничному треду, для контингента подобных площадок это не так-то просто. https://www.linux.org.ru/forum/talks/18072017?lastmod=180720...
> хотеть не вредно, заведи жену и устройся на работуСношаться с железкой проще.
Ага, завалялся. Такие компы на авито по цене винтажного барахла торгуются.
Управление ядерными реакторам, и системами мкс).
Надёжность? Очень сомнительно. На Асме за пределы буфера выйти ещё легче, чем в Сишке.
То что должно быстро отображать данные и обрабатывать их (например дефектоскоп или управление чем-то, что похоже на реалтайм, но скорее требуется быстрота, а не гарантированный реалтайм)
>Объясните сценарии использования такой ОС?Чипы со стиралок перепрограммировать во что-то другое
> Объясните сценарии использования такой ОС?Сможешь вернуться в 1991 и спросить то же самое у Торвальдса?
Очевидно в 91 году сценариев не было. И что дальше? Почему нельзя честно ответить на вопрос, а надо начинать юродствовать?Вот этот прихват "а где был ваш Линукс в 91" порядком надоел. Для иллюстрации его несостоятельности можешь на вопрос "в каком классе учится ваш ребенок?" отвечать "КАК И ЭЙНШТЕЙН В ЭТОМ ВОЗРАСТЕ".
> Очевидно в 91 году сценариев не было. И что дальше?Возможно потому что ты настолько глуп, что не в силах осознать, что большинство технологий появились не по щелчку вот прямо сегодня, а развивались с чего-то небольшого.
Вот этим чем-то сегодня и является этот MenuetOS.
> Почему нельзя честно ответить на вопрос, а надо начинать юродствовать?
Глупые вопросы порождают глупые ответы.
> Глупые вопросы порождают глупые ответы.Вот именно. Речь шла про десктопную ОС, а ты влез с глупым вопросом о Linux 91 года, который вообще даже операционной системой не является (а лишь ее ядром).
> Вот именно. Речь шла про десктопную ОС, а ты влез с глупым
> вопросом о Linux 91 года, который вообще даже операционной системой не
> является (а лишь ее ядром).Речь шла о том, что никто не знает где будет технология через 20 лет, и если бы такие как ты ненужнисты кукарекали о своем ненужно IRL - человеческие технологии дальше колеса бы не ушли.
> Речь шла о том, что никто не знает где будет технология через 20 летСабж развивается 25 лет, написан на асме и поддерживает только x86-64. Ну давай вместе подумаем, где будет эта "технология" через 20 лет? Там же, где и 25 лет назад, лол.
> и если бы такие как ты ненужнисты кукарекали о своем ненужно IRL - человеческие технологии дальше колеса бы не ушли.Тебя не спрашивали о каких-то абстрактных человеческих технологиях. И даже не о Linux. Тебя спрашивали конкретно о MinuetOS.
>> Почему нельзя честно ответить на вопрос, а надо начинать юродствовать?
> ты настолько глуп, что не в силах осознать, что большинство технологий появились не по щелчку вот прямо сегодня, а развивались с чего-то небольшого.
> Вот этим чем-то сегодня и является этот MenuetOS.Этот MenuetOS "развивается" уже 25 лет и так и не стал "чем-то". Вот поэтому ты и не в состоянии ответить на вопрос напрямую, и вместо этого начал нести абстрактную пыль в глаза про Линукс.
Изначально МануетОС была как демка для рекламы FASM, это потом уже как отдельный проект стал
>> Объясните сценарии использования такой ОС?
> Сможешь вернуться в 1991 и спросить то же самое у Торвальдса?К чему ты это ляпнул? Не в курсе, что Linux не ОС, а лишь ядро?
> К чему ты это ляпнул? Не в курсе, что Linux не ОС, а лишь ядро?Ты там определяйся))
"Хоба, смотри как могут, всего мегабайт весит!"
>Объясните сценарии использования такой ОС?Сценария нет, ни на сервере, ни на десктопе, ни на встраиваемой, потому что на Ассемблере прикладное ПО никто не умеет писать. Они вон, СИ выкидывают потому что на нём никто не умеет писать безопасный код (а он следующий по сложности после Ассемблера), переходят на Rust в надежде что в нём не будет ошибок.
> потому что на Ассемблере прикладное ПО никто не умеет писатьНе "не умеет", а не видит в этом здравого смысла.
Последний скрин охрененно, как в лучших домах филадельфии
в смысле улицах?
> Последний скрин охрененноЧто там - круглые уголки... Это уже классика.
> филадельфииДа, все под менталитет Филадельфии, возможно Кенсингтон Авеню).
Выглядит достойно. Оболочка более менее красивая, не то что некоторые Линукс оболочки как из 90-ых. До прочтения были впечатления что это эксперимент где только ядро, а оказалось - полноценная ОС с GUI и даже поддержкой Линукс приложений
Оно изначально как тв-приставка работало на заре появления цифрового тв, поэтому маленькие требования (расчёт под встраиваемые железки тех времён, где был не арм, а вариации 8086-совместимых чипов) и поддержка dvb-карт. Это самая что ни на есть система для смарттв из времён, когда и понятия такого не существовало. Отсюда и требование по лицензии, потому что цель — коммерческие тв-боксы.
> Сборки MenuetOS подготовлены для 64-разрядных систем x86 и могут быть запущены под управлением QEMUТут понятно, а практические кейсы есть?
У меня инсталлятор драйвера для сетевой карты занимает раз в 100 больше.
Ну и зачем ты его написал? Перепиши нормально.
Не думал, что доживу до того времени, когда снова появятся ОС на ассемблере. Начинал свой путь на компьютерах в 1992 году именно с ассемблера ещё на ZX-Spectrum. Наблюдаю за развитием проекта, авторам желаю удачи и всех благ!
Начинали свой путь с ассемблера каким способом - играя в игры, написанные на ассемблере?
Для Спектрума была замечательная парочка Gens и Mons - ассемблер и отладчик.
> Для Спектрума была замечательная парочка Gens и Mons - ассемблер и отладчик.Но так то ALL довольно быстро стал допирать что с хотя-бы флоповодом, CP/M и прочим Microsoft C 80 девелоп софта так то смотрится заметно перспективнее.
Погугли Compu-Studio Ltd.
О, так этож ваша группа сделали редактор карт для черного ворона. Грац! Много часов за ним провел.Благодаю)
Если сама ос в 1.4мб умещается и в ней идет в комплекте FASM, который на гитхабе почти метр, то сама ось со всем софтом(включая игрушки) в 400Кб умещается?А есть какой-то сахар на FASM? Чтоб облегчить понимание синтаксиса на первое время, а может и не только.
там есть макросы и от некоторых вполне может слипнуться. Только это в понимании синтаксиса не очень поможет
макросы это именно та концепция которая отвратила людей от ассемблера, макросы это часть текстового редактора, не более, и никак с ассемблером пересекаться не должно.
Так на гитхабе исходники, а 1.4МБ это скомпиленное (ну или если исходники в комплекте всё же тащут, могут быть сжатыми).
Чему вы так удивляетесь? Мы в своё время писали вполне себе серьезные инженерные программы на ассемблере для ДВК-2, которые умещались не в килобайты, а в байты.
Вся ОС меньше, чем helloworld на расте.
Сколько, по Вашему мнению, занимает HelloWorld на расте?
Вообще написано, что в режиме Release и Optimized - 600Kb и 50Kb соответственно. Все же меньше, чем 1.44, однако 2 Released хеллоуврота на расте это уже почти как вся ОС по размеру.
Нет таких "режимов".
> Вообще написано, что в режиме Release и Optimized - 600Kb и 50Kb соответственно. Все же меньше, чем 1.44, однако 2 Released хеллоуврота на расте это уже почти как вся ОС по размеру.Унылая классика опеннетного воежа супротив Раста: "Упомяни Раст и победи его!" и "мы все так пишем, а значит ентно правда!" 🙄
Минималочка будет где-то так:
#![no_std]
#![no_main]fn say_raw_hello() -> ! {
use scall;
let msg = "Hello World!\n";
let err = "Couldn't write to stdout :(\n";
unsafe {
if scall::syscall!(WRITE, 1, msg.as_ptr(), msg.len()).is_err() {
scall::syscall_nofail!(WRITE, 2, err.as_ptr(), err.len());
}
scall::syscall_nofail!(EXIT, 0);
}
loop{}
}
но так ... слишком банально и уныло.
---Я как-то ковырялся ради интереса - узнать, сколько _на самом деле_ занимают "абстракции" с обвязками и пробросом ошибок (и той же возможностью форматированного в рантайме вывода):
#![no_std]
#![no_main]mod io;
mod sys;fn say_hello() -> isize {
let msg = "Hello World\n";
let Err(err) = io::print(msg) else {
return sys::EXIT_SUCCESS
};
//panic!("panicked at {file}:{line}:\n{msg}",
// file=file!(), line=line!(), msg="Couldn't print to stdout 8-O");
let _ = io::eprint(err.msg.unwrap_or("Couldn't print 'Hello'!☹"));
let Some(raw)= err.raw_os_err else {
return sys::EXIT_FAILURE
};
return raw.errno.unwrap_or(sys::EXIT_FAILURE)
}
#[unsafe(no_mangle)]
pub extern "system" fn start() -> ! {
sys::exit(say_hello());
}
(самопальные)
io:
https://paste.opensuse.org/pastes/81585111e4c9
sys:
https://paste.opensuse.org/pastes/7ef09e000ff5"Будет жирнота, да!" - скажет любой опеннетный кексперт, но реальность почемуто отличается от опеннетных фантазий:
% cargo build --release --target=i686-unknown-linux-gnu
% ldd target/i686-unknown-linux-gnu/release/free
% ldd: target/i686-unknown-linux-gnu/release/free: not a dynamic ELF executable% llvm-strip --strip-sections target/i686-unknown-linux-gnu/release/free && ll target/i686-unknown-linux-gnu/release/free
-rwxr-x--- 1 анон опеннет 193B 3 Jan. 12:14 target/i686-unknown-linux-gnu/release/free*% target/i686-unknown-linux-gnu/release/free
Hello World% target/i686-unknown-linux-gnu/release/free > /dev/full || errno $?
Couldn't write to stdout!☹
ENOSPC 28 No space left on deviceвесь экзешник:
% hexdump -C target/i686-unknown-linux-gnu/release/free
00000000 7f 45 4c 46 01 01 01 09 00 00 00 00 00 00 00 00 |.ELF............|
00000010 02 00 03 00 01 00 00 00 7d 00 40 00 34 00 00 00 |........}.@.4...|
00000020 00 00 00 00 00 00 00 00 34 00 20 00 01 00 00 00 |........4. .....|
00000030 00 00 00 00 01 00 00 00 54 00 00 00 54 00 40 00 |........T...T.@.|
00000040 54 00 40 00 6d 00 00 00 6d 00 00 00 07 00 00 00 |T.@.m...m.......|
00000050 01 00 00 00 43 6f 75 6c 64 6e 27 74 20 77 72 69 |....Couldn't wri|
00000060 74 65 20 74 6f 20 73 74 64 6f 75 74 21 e2 98 b9 |te to stdout!...|
00000070 0a 48 65 6c 6c 6f 20 57 6f 72 6c 64 0a 53 57 56 |.Hello World.SWV|
00000080 31 f6 b9 71 00 40 00 ba 0c 00 00 00 b8 04 00 00 |1..q.@..........|
00000090 00 46 89 f3 cd 80 31 db 3d 01 f0 ff ff 72 1c 89 |.F....1.=....r..|
000000a0 c7 bb 02 00 00 00 b9 54 00 40 00 ba 1d 00 00 00 |.......T.@......|
000000b0 b8 04 00 00 00 cd 80 f7 df 89 fb 89 f0 cd 80 eb |................|
000000c0 fe |.|
Ой. 193 байта. С (минимальным) пробросом/обертками ошибок. Где-где там еще 49.8KБ? 🙄То же самое, теперь с раскомментированной паникой:
---
panic!("panicked at {file}:{line}:\n{msg}",
file=file!(), line=line!(), msg="Couldn't print to stdout 8-O");
---% cargo build --release --target=i686-unknown-linux-gnu
% llvm-strip --strip-sections target/i686-unknown-linux-gnu/release/free && ll target/i686-unknown-linux-gnu/release/free
-rwxr-x--- 1 анон опеннет 362B 3 Jan. 12:15 target/i686-unknown-linux-gnu/release/free
% target/i686-unknown-linux-gnu/release/free
Hello World% target/i686-unknown-linux-gnu/release/free > /dev/full || errno $?
panicked at src/main.rs:29:
Couldn't print to stdout 8-OЕсли 362 байта все еще слишком жирно - панику можно вообще свести к "классике":
% cargo build --release --target=i686-unknown-linux-gnu -Z build-std-features=panic_immediate_abort
% llvm-strip --strip-sections target/i686-unknown-linux-gnu/release/free && ll target/i686-unknown-linux-gnu/release/free
-rwxr-x--- 1 анон опеннет 138B 3 Jan. 12:15 target/i686-unknown-linux-gnu/release/free*% target/i686-unknown-linux-gnu/release/free
Hello World
% target/i686-unknown-linux-gnu/release/free > /dev/full || errno $?
zsh: illegal hardware instruction target/i686-unknown-linux-gnu/release/free > /dev/full
138 байтов ... да, жирнота бинаря и рантайма так и прет, так и прет! 😀
---
Ну и так, небольшая демка на тему "А я вот щас к̵а̵к̵ ̵в̵с̵т̵а̵н̵у̵ ̵с̵ ̵д̵и̵в̵а̵н̵а̵ как зафигачу то же самое на асме!!!"
% cargo build --release --target=x86_64-unknown-linux-gnu
% target/x86_64-unknown-linux-gnu/release/free
Hello World% cargo build --release --target=powerpc64-unknown-linux-gnu
% qemu-ppc64-static target/powerpc64-unknown-linux-gnu/release/free
Hello World% cargo build --release --target=armv7-unknown-linux-gnueabihf
% qemu-arm target/armv7-unknown-linux-gnueabihf/release/free
% llvm-strip --strip-sections target/armv7-unknown-linux-gnueabihf/release/free
ll target/armv7-unknown-linux-gnueabihf/release/free
-rwxr-x--- 1 анон опеннет 252B 3 Jan. 12:15 target/armv7-unknown-linux-gnueabihf/release/free
Hello World% cargo build --release --target=x86_64-unknown-freebsd #да, там тоже другие сисколлы и аби
...
>[оверквотинг удален]
> % qemu-arm target/armv7-unknown-linux-gnueabihf/release/free
> % llvm-strip --strip-sections target/armv7-unknown-linux-gnueabihf/release/free
> ll target/armv7-unknown-linux-gnueabihf/release/free
> -rwxr-x--- 1 анон опеннет 252B 3 Jan.
> 12:15 target/armv7-unknown-linux-gnueabihf/release/free
> Hello World
> % cargo build --release --target=x86_64-unknown-freebsd #да, там тоже другие сисколлы
> и аби
> ...
>
А ты что наши сишные сисколы дергаешь? Вот потому оно и весит так мало. Ты напиши свои на расте, а потом сравнивай!
> А ты что наши сишные сисколы дергаешь? Вот потому оно и весит
> так мало. Ты напиши свои на расте, а потом сравнивай!Н-да.
% ldd target/i686-unknown-linux-gnu/release/free
% ldd: target/i686-unknown-linux-gnu/release/free: not a dynamic ELF executable% less scall/src/macros.rs
#[macro_export]
macro_rules! syscall {
($nr:ident$(, $args:expr)* $(,)?) => {
$crate::decode_raw_result($crate::syscall_raw!($nr$(, $args)*))
};
}
#[macro_export]
macro_rules! syscall_raw {
($nr:ident) => {
$crate::syscall0($crate::nr::$nr)
};($nr:ident, $a1:expr) => {
$crate::syscall1($crate::nr::$nr, $a1 as usize)
};% less scall/src/platform/linux-x86/nr.rs
pub const WRITE: usize = 4;
pub const WRITEV: usize = 146% less scall/src/platform/linux-x86/mod.rs
use core::arch::asm;pub mod eno;
pub mod nr;#[inline(always)]
pub unsafe fn syscall0(n: usize) -> usize {
let ret: usize;
asm!(
"int $$0x80",
inout("eax") n => ret,
);
ret
}#[inline(always)]
pub unsafe fn syscall1(n: usize, a1: usize) -> usize {
let ret: usize;
asm!(
"int $$0x80",
inout("eax") n => ret,
in("ebx") a1,
);
ret
}
Нууу ... классика, че. Попробуй придумать что-то другое 😀Кстати, где там говоришь, твои "сишные" сисколы?
https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=sysde...
/* Usage: long syscall (syscall_number, arg1, arg2, arg3, arg4, arg5, arg6)
We need to do some arg shifting, the syscall_number will be in
rax. */
.text
ENTRY (syscall)
movq %rdi, %rax /* Syscall number -> rax. */
movq %rsi, %rdi /* shift arg1 - arg5. */
movq %rdx, %rsi
movq %rcx, %rdx
movq %r8, %r10
movq %r9, %r8
movq 8(%rsp),%r9 /* arg6 is on the stack. */
syscall /* Do the system call. */
cmpq $-4095, %rax /* Check %rax for error. */
jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
ret /* Return to caller. */PSEUDO_END (syscall)
> loop{}за такую минималочку увольняют без пособия
> % cargo build --release --target=i686-unknown-linux-gnu
Чё-т какая-то ерунда
error: could not find `Cargo.toml` in `/home/fuckuper/lazha` or any parent directory
>> loop{}
> за такую минималочку увольняют без пособияЧуйствуется у̵н̵ы̵л̵а̵я̵ ̵п̵о̵п̵ы̵т̵к̵а̵ ̵п̵р̵и̵с̵к̵и̵п̵а̵т̵ь̵с̵я̵ опеннетная кекспертиза. Ну да, зачем нам еще один фоллбэк для сигнализации ошибки ... да и куда лучше начать выполнять рандомный код, если exit не сработал 🙄
>> % cargo build --release --target=i686-unknown-linux-gnu
> Чё-т какая-то ерунда
> error: could not find `Cargo.toml` in `/home/fuckuper/lazha` or any parent directoryМне лень было загружать куда-то весь проект. Все равно ж местным военам оно на самом деле не интересно, ведь для сборки нужен раст и пророк его, cargo.
Cargo.toml
https://paste.opensuse.org/pastes/b96eeb2c7891
./cargo/config.toml
https://paste.opensuse.org/pastes/dd6881855cacпервые три строчки (unstable ...) в config.toml можно закомментить, тогда сборка будет только для актуальной платформы, с импользованием установленного/ных std (т.е. если в таком режиме пользоваться паникой, то бинарь может выйти и побольше, байтиков под 600).
scall можно взять c "https://github.com/cptpcrd/scall" ... ну или закомментить
offline=true
в Cargo.toml и раскомментить
#scall = {git = "https://github.com/cptpcrd/scall", tag="v0.2.5"}
> exit не сработал 🙄ладно-ладно, exit не увидел.
> Cargo.toml
> https://paste.opensuse.org/pastes/b96eeb2c7891
> ./cargo/config.toml
> https://paste.opensuse.org/pastes/dd6881855cac
> первые три строчки (unstable ...) в config.toml можно закомментить, тогда сборка будет
> только для актуальной платформы, с импользованием установленного/ных std (т.е. если в
> таком режиме пользоваться паникой, то бинарь может выйти и побольше, байтиков
> под 600).Что-то там не подтянулось.
Compiling free v0.3.0
warning: field `kind` is never read
--> src/io.rs:9:9
|
8 | pub struct IoError {
| ------- field in this struct
9 | pub kind: IoErrorKind,
| ^^^^
|
= note: `IoError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
= note: `#[warn(dead_code)]` on by defaulterror: linking with `cc` failed: exit status: 1
|
= note: "cc" "-m64" "/tmp/rustcIJ3jAD/symbols.o" "<1 object files omitted>" "-Wl,--as-needed" "-Wl,-Bstatic" "<sysroot>/lib/rustlib/x86_64-unknown-freebsd/lib/{libcompiler_builtins-*}.rlib" "-L" "/tmp/rustcIJ3jAD/raw-dylibs" "-Wl,-Bdynamic" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-o" "/root/1/target/x86_64-unknown-freebsd/release/deps/free-7e953dcc03c3c886" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-Wl,--strip-all" "-nodefaultlibs"
= note: some arguments are omitted. use `--verbose` to show all linker arguments
= note: ld: error: undefined symbol: main
>>> referenced by crt1_s.S:64 (/usr/src/lib/csu/amd64/crt1_s.S:64)
>>> /usr/lib/Scrt1.o:(_start)ld: error: undefined symbol: __libc_start1
>>> referenced by crt1_s.S:80 (/usr/src/lib/csu/amd64/crt1_s.S:80)
>>> /usr/lib/Scrt1.o:(_start)cc: error: linker command failed with exit code 1 (use -v to see invocation)
warning: `free` (bin "free") generated 1 warning
error: could not compile `free` (bin "free") due to 1 previous error; 1 warning emitted
> Что-то там не подтянулось.Структура проекта:
main.rs
io.rs
sys.rs
Cargo.toml
.cargo/config.tomlНа вскидку думается мне, что ты пытаешься собрать самый первый код (потому что попытка линковки с crt1/main & Co). Це был неполный пример (просто "классика" на "прямых" вызовах сисколов, тут уже было не раз, в том числе и от меня), там первых двух строчек не хватает:
#![no_std]
#![no_main]mod io;
mod sys;fn say_raw_hello() -> ! {
use scall;
let msg = "Hello World!\n";
let err = "Couldn't write to stdout :(\n";
unsafe {
if scall::syscall!(WRITE, 1, msg.as_ptr(), msg.len()).is_err() {
scall::syscall_nofail!(WRITE, 2, err.as_ptr(), err.len());
}
scall::syscall_nofail!(EXIT, 0);
}
loop{}
}fn say_hello() -> isize {
let msg = "Hello World\n";
let Err(err) = io::print(msg) else {
return sys::EXIT_SUCCESS
};
panic!("panicked at {file}:{line}:\n{msg}",
file=file!(), line=line!(), msg="Couldn't print to stdout 8-O");
let _ = io::eprint(err.msg.unwrap_or("Couldn't print 'Hello'!☹"));
let Some(raw)= err.raw_os_err else {
return sys::EXIT_FAILURE
};
return raw.errno.unwrap_or(sys::EXIT_FAILURE)
}
#[unsafe(no_mangle)]
pub extern "system" fn start() -> ! {
// say_raw_hello()
sys::exit(say_hello());
}
Ну и да, даже для нативной системы нужно указать таргет:
cargo build --release --target=x86_64-unknown-freebsd
зы:Под фряху там кстати фолбэк в панике, с сисколом ABORT2
if io::Stream::stderr()
.write(msg.as_bytes(), msg.len())
.is_err() {
unsafe {
#[cfg(target_os = "freebsd")]
syscall_nofail!(ABORT2, msg.as_ptr(), 0, 0);
//#[cfg(target_os = "linux")]
// syscall_nofail!(SYSTEMD_WRITELOG, LOG_WARNING, msg.as_ptr(), msg.len());
}
}
exit(EXIT_FAILURE);
Т.е. если не вывелось в stdout и stderr, то оно уходит в syslogd. Причем, оно даже действительно работает 🙂
А вот под линух чего-то похожего (по простоте использования) ... увы, не нашел.
> .cargo/config.tomlа, вот тут точку в .config не поставил.
238 байт получилось
Но там явно какой-то мухлёж с форматом бинаря, поскольку всё запихано в одну секцию с атрибутами RWX, реально так никто не делает - код отдельно, неизменяемые данные отдельно и т.д.
В дефолтно скомпилированной C программе 11 секций, а тут всё в одной.
>> .cargo/config.toml
> а, вот тут точку в .config не поставил.
> 238 байт получилосьНе, ну потому и был i686-linux таргетом.
У фряхи еще и ABI чутка более многословен, потому что ошибка сигнализируется через CarryFlag.
> Но там явно какой-то мухлёж с форматом бинаря, поскольку всё запихано в
> одну секцию с атрибутами RWX, реально так никто не делает - код отдельно, неизменяемые данные отдельно и т.д.До применения llvm-strip --strip-sections:
Idx Name Size VMA LMA File off Algn
0 .rodata 00000029 0000000000200078 0000000000200078 00000078 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
1 .text 0000004a 00000000002000a1 00000000002000a1 000000a1 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .comment 00000065 0000000000000000 0000000000000000 000000eb 2**0
CONTENTS, READONLY
Можно сделать просто "strip", хидер останется, будет 5XX байтов (смотря какой линкер использовать).A так-то да, грамотный выбор опций линковщика это конечно же мухлеж. Правда, работающий на куче платформ и только для раста (потому что прошло-позапрошлый раз тут были и хелловроты на FASM, c таким примерно тем же лэйоутом экзешника, в качестве примера "ваш раст жирен, вот как надо") 😉
Ну да, с fasm сравнивать это совсем нелепо.Более-менее вменяемое сравнение с C будет только если растовые либы собрать в .so и оставить только main в бинаре. Если так можно конечно.
Но в любом случае язык с шаблонами будет генерить жирный код, на каждую комбинацию типов свой инстанс. Другое дело что C такой код вообще не генерит, а если заморочиться макросами то наверное будет то же самое.
А если писать без шаблонов, с параметрами, это будет шитый код, он будет компактнее но медленнее.
> Я как-то ковырялся ради интереса - узнать, сколько _на самом деле_ занимают
> "абстракции" с обвязками и пробросом ошибок (и той же возможностью форматированного
> в рантайме вывода):Нефиговые там у вас в хрусте тантры. И сколько хрустиков на ЭТО разопрется? А пока у нас есть librsvg - одна из самых жирных либ в системе. Хуже только сам LLVM наверное. И после переписывания на rust она как раз в разы больше стала, затобезопастная.
> Вся ОС меньше, чем helloworld на расте.Там авто-бот скрыл коммент с хелловротом на расте аж на 138 байтов ... так что обновите уже наконец ваши методички, господа опеннетные воители супротив раста 😈
Дак считать надо бинарник, а не символы в сырцах.
>> % cargo build --release --target=i686-unknown-linux-gnu -Z build-std-features=panic_immediate_abort>> % ll target/i686-unknown-linux-gnu/release/free
>> -rwxr-x--- 1 анон опеннет 138B 3 Jan. 12:15 target/i686-unknown-linux-gnu/release/free*
>> % target/i686-unknown-linux-gnu/release/free
>> Hello World
> Дак считать надо бинарник, а не символы в сырцах.Как и ожидалось - когда Военам нечего возразить по существу, начитается 🤡
> not a dynamic ELF executableТы где это собрался запускать эту непереносимую кучу мусора? Хинто: номера сисколов в каждой системе - разные.
>> not a dynamic ELF executable
> Ты где это собрался запускать эту непереносимую кучу мусора? Хинто: номера сисколов
> в каждой системе - разные.Питонист, не пались ты так.
И таки да, в оригинале #102 спецом было (но Воены ж не читатели):
>> Ну и так, небольшая демка на тему "А я вот щас к̵а̵к̵ ̵в̵с̵т̵а̵н̵у̵ ̵с̵ ̵д̵и̵в̵а̵н̵а̵ как зафигачу то же самое на асме!!!"
% cargo build --release --target=x86_64-unknown-linux-gnu
% target/x86_64-unknown-linux-gnu/release/free
Hello World% cargo build --release --target=powerpc64-unknown-linux-gnu
% qemu-ppc64-static target/powerpc64-unknown-linux-gnu/release/free
Hello World% cargo build --release --target=armv7-unknown-linux-gnueabihf
% qemu-arm target/armv7-unknown-linux-gnueabihf/release/free
Hello World
% llvm-strip --strip-sections target/armv7-unknown-linux-gnueabihf/release/free
ll target/armv7-unknown-linux-gnueabihf/release/free
-rwxr-x--- 1 анон опеннет 252B 3 Jan. 12:15 target/armv7-unknown-linux-gnueabihf/release/free
% cargo build --release --target=x86_64-unknown-freebsd #да, там тоже другие сисколлы и аби
% target/x86_64-unknown-freebsd/release/free && uname -ms
Hello World
FreeBSD amd64
Какой-то там странный вывод несмотря на попытку обработки ошибок.% target/i686-unknown-linux-gnu/release/free > /dev/full || errno $?
zsh: illegal hardware instruction
> Какой-то там странный вывод несмотря на попытку обработки ошибок.Там физически нет никаого другого вывода, кроме "Hello World"
--
> immediate-abort: terminate the process upon panic, and do not call any panic hooks...
> The current implementation of intrinsics::abort is to invoke an invalid instruction, on most platforms.Потому оно и меньше на 57 байт - проброс (и вывод) ошибки идет после паники, т.е. оно все, вместе с самим сообщением, вырезается оптимизатором.
кмк exit(-1) было бы более корректным завершением, не такая уж катастрофическая ситуация, что байтики не вывелись.
смысл делать выход через exception, которое должно сначала ядро обработать и потом процесс аварийно завершить. ещё и core записывать начнёт.
> кмк exit(-1) было бы более корректным завершением, не такая уж катастрофическая ситуация,
> что байтики не вывелись.
> смысл делать выход через exception, которое должно сначала ядро обработатьТам весь смысл в "да, так тоже можно, если нужно/хочется". Ведь абсолютно все плюшки паники теряются.
не очень понятно зачем в расте с его возможностью вернуть Option или None или вообще Error(текст) вместо результата ещё и panic. Даже если в функции сортировки у тебя середина оказывается за пределами массива.
> illegal hardware instructionОбычная программа на расте :)
> так что обновите уже наконец ваши методички, господа опеннетные воители супротив раста 😈Да забей: 99% этих воинов никакого отношения к программированию не имеют.
> никакого отношения к программированию не имеютКак и приведённый выше хеловрот.
>>> Вся ОС меньше, чем helloworld на расте.
>> <приводится пример хелловрота на 138 байт>
> НИЩИТАИЦА!!1Обожаю опеннет и его воителей супротив раста 😀
это же подмена понятий, вы на расте сделайте функциональный аналог и тогда размер сравнивайте
Непонятно откуда тут собственный X-сервер написанный на асме, если вейленд-фанбои говорят, что ничего другого кроме единственной реализации Xorg не существует? И даже tinyx, по их мнению, не существует.
И что в этом огрызке работает? Или для вас важно количество серверов а не их качество?
>собственного X-сервера, написанного на ассемблере, в который можно перенаправить вывод приложения, запущенного на внешней системе с Linux, для отображения его интерфейса в MenuetOSКак бы, читаем текст новости.
ну то есть гномог и кодое на этом не запуститьбуду ссылаться на этот тред, когда будут разговоры про несовместимость реализации войленда
А что в новости? Или для вас запуск Xeye и Xcalc - предел мечтаний? Запустите под этим что-то посерьёзнее, Inkscape, Krita, SuperTuxCart, Firefox, i3, Wesnoth и так далее. Чтоб всё работало - захват экрана, модальные окна, мозаичная компоновка, аппаратное ускорение, векторные шрифты, hidpi, и всё прочее. Только вот у вас будет одна маленькая проблема: в большинство софта уже даже под линуксом проброс Xorg-а не переживают, не говоря уже о том, чтобы полноценно работать. Ведь даже если вы и пробросите условный Wesnoth и получите в нём 0.25 FPS, то это не то, что подразумевается под работой.
Одним ассемблером всю экосистему не напишешь (долго, нудно и главное - нет смысла кодить на уровне регистров), всё-таки надо выходить на высокоуровневые ЯП. Идельно было бы сопрячь АПИ с языком Ди и уже во все края писать ООП-шные монстры.
Мода на этот Ди прошла уже и никогда не вернётся. Даже компилятор разработчики в опенсорс выкинули.
Обидно. Одна ошибка в виде GC по умолчанию убила самого настоящего убийцу плюсов.
Чем идеально
По графону тоже замечение: тащить линукс-xлaм в такую систему нет смысла, тут Х-сервер не нужен вообще. Не говоря уже об его оверинженеринге. Какие-то "системные слои"(для абстракций) надо придумать, но в целом затачиваться на максимальное использование локальной видюхи в однопользовательском режиме.
У разработчика данного поделия явно переизбыток свободного времени. Иначе непонятно зачем тратить столько сил на написание бесполезного и никому ненужного кроме самого автора велосипеда. Кстати сказать, если не считать того что система написана на ассемблере, больше ничем оригинальным она не выделяется -- типичный бабушкин десктоп образца 90-х.
> типичный бабушкин десктоп образца 90-х.Кстати, это некорректное сравнение. Бабушки не осилят интерфейсы ОС девяностых и даже нулевых, ПО тех времён было заточено под гиков, а вот как раз интерфейсы современных DE затачиваются под бабушек в том числе, что Гном, что Шindoшs, что Android. Особняком стоят Mac и KDE, первый вроде всегда такой был, второй так и продолжает придерживаться баланса между гиковостью и удобством для нормальных людей.
> Бабушки не осилят интерфейсы ОС девяностых и даже нулевых,Интерфейсы 90х (той же Винды) создавались с академическим подходом на основе кучи научных исследований. Там и консистентность, и всплывающие подсказки, и расположение элементов и прочее играло на простоту и понятность.
> вот как раз интерфейсы современных DE затачиваются под бабушек в том числе, что Гном, что Шindoшs, что Android
Лол. Именно что соовеменные итерфейсы Гнома, Винды и Андроида - это жесть в стиле "кто в лес, кто по дрова". А когда сторонноие приложения начнешь ставить - это вообще финиш, ибо у каждого свой уникальный дизигн.
Да, пользовательский интерфейс шинды раньше был лучше.А потом началось.
Пригласите A.Лебедева, ведь он молодец, он сделал все эти дизайны vk, Yandex, эмм, Microsoft. ( лично ).
> разработка ядра которой ведётся полностью на ассемблере
> собственного X-сервера, написанного на ассемблереЭто реально очень круто, просто снимаю шляпу.
По моему мнению, тут только одно "но" — проект мертворожденный, потому что сопровождать на ассемблере это никто не будет (ну, разве что автор, пока ему это не надоест).
> потому что сопровождать на ассемблере это никто не будетденьги как предложат, так быстро побежишь
Смешная лицензия. Думают что кто-то заплатит. Также странен выбор процессора. То есть ассемблер я понимаю, но зачем же x86, когда в мире столько прекрасных архитектур?
Потому что начинали разработку давным-давно и выбора у них особо не было по архитектуре. А теперь переписывать на arm или RISC-V уже не осилят, старенькие они
Для этого существуют языки программирования. Вообще русских языков программирования маловато. Я не знаю ни одного который в бинарный файл превращал бы исходный код без промежуточных языков. Вот fasm вполне мог бы и справиться с такой задачей. А потом уже и на другие платформы можно было бы подтянуть. Хотя и ныне можно написать и на устаревших С/С++/Pascal/Haskell/Lisp/Prolog. У других достаточно недостатков чтобы не использовать, хотя никто не запретил бы, даже приветствовали бы. Особенно если кто на rust,go,c# напишет. Хотя вот по моему личному мнению наибольшее сообщество у компилятора может собрать TypeScript/JavaScript и Python. Такой язык программирования и студент за год точно напишет причем до уровня бакалавра.
Затем что intel x86 был лидером рынка, когда они начали разработку.
Ого, оно живое. Я помню в школе учился в нулевых и нашел эту ось. Было прикольно с дискеты загрузиться и получить, на первый взгляд, рабочую систему.
Удивительно, она уже в нулевых существовала (даже запускал с дискеты на реальном железе) и до сих пор вмещается на дискету, несмотря на то что за 20 лет надобавляли чего-то.PS: комментарии удивляют, новость о сабже не первый раз постится, а до сих пор будто первый раз увидели, то ли короткая память у комментаторов.
Надо отдать должное упорству автора: поддерживать минимальный размер системы спустя 26 лет и при этом пилить новьё.
Как понимаю, дыр там ещё на порядок больше, чем в том что на си пишут. Просто никто аудит не делал.Ребята как будто в противоположную сторону воюют.
Можно просто написать компилятор ассемблера на расте, что автоматически сделает весь код безопасным.
Это зависит от того, кто возьмется реализовывать предложенный вами проект. Если офтопик, то первым пунктом будет вставка телеметрии в любой создаваемый инструментарием проект.
С чекером боровов и проверкой выхода за границы буфера для ассемблерного кода :))
Сделать весь код CVE Safe
> Как понимаю, дыр там ещё на порядок больше, чем в том что на си пишут. Просто никто аудит не делал.Делаете предположение, которое в дальнейшем используете как доказанный факт. Фильмов об НЛО насмотрелись?
>Исходный код проекта Menuet64 распространяются под ограничивающей лицензией, требующей согласования любого использования в коммерческих целях, а Menuet32 - под лицензией GPL.Вот что значит - ОС на ассемблере. Хочешь amd64 - не получишь. Ну а arm64 вообще в природе отсутствует.
Вот читай
https://board.kolibrios.org/viewtopic.php?t=3954&sid=c480423...
Пока что лиусшая ос на лучшем языке.
Как поставить на RPi?
Туда надо kkrieger, в репозитории). https://www.reddit.com/r/boomershooters/comments/1gxe1v6/kkr...
Такое впечатление что люди нашли как сделать перенос в эту чуду систему каких то функций из cinnamon и переносят это через темп и грызут попкорн , может ли стать это актуальным если так дело и происходит не известно не думаю что там видео драйвера вывезут хотя бы какую нить игру по требованиям выше контур страика
> не думаю что там видео драйвера вывезут хотя бы какую нить игру по требованиям выше контур страикаВсё проще: "Возможен запуск ... таких игр, как Quake и Doom".
Проприетарщина с закрытым кодом ядра, которую по лицензии нельзя даже распространять.
чисто freeware для личного использования, почему про это новости на opennet?
Господа! Кто-то из реальных пользователей МинуэтОс тут есть?Есть ли для нее криптокошельки?
Как она живет в виртуалках КЕМУ?
>Кто-то из реальных пользователей МинуэтОс тут есть?Что про Колибри ОС, что про сабж все всё знают, но это не значит что используют.
А чего на скрине все иконки одинаковые? Как разобраться? В ЗВ клавиши хоть были разноцветными, хотя и без подписей. Но как-то разбирались джедаи и даже имперцы. А тут и Дарт Вейдер шлем себе сломает.
Что такое 3В? Третий "В" класс?
>3ВПредположу что Звездные Войны.
Без ИИ таким безумием заниматься нельзя. Страшно подсчитать затраты времени. Время жизни бесценно, лучше его провести с семьёй, заниматься личным развитием, волонтерством, построить дом, организовать бизнес, а не шлёпать бесконечно по клавишам, растрачивая впустую бесценную энергию молодости. А с ИИ заниматься бессмысленно, потому что проще сделать систему-нейронную сеть, которая сама будет приспосабливаться к пользователю и железу
Пустая демагогия.