LINUX.ORG.RU

Gloire — ОС с ядром Ironclad, написанном на языке Ada

 , gloire, ironclad,

Gloire — ОС с ядром Ironclad, написанном  на языке Ada

4

3

Недавно на Github появился репозиторий операционной системы Gloire. Gloire использует ядро Ironclad, написанное на языке программирования Ada, и пользовательское окружение GNU. На сайте, посвященном Ironclad, написано что оно находится в процессе «формальной верификации».

Для ОС Gloire доступны загрузочные образы для x86, хотя поддерживаемого оборудования пока мало.

Репозиторий Gloire: https://github.com/streaksu/Gloire?tab=readme-ov-file

Сайт проекта ядра: https://ironclad.nongnu.org

И Gloire, и Ironclad распространяются на условиях GNU General Public License версии 3.

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



Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 7)

Интересная штука, потыкаю.

Vilicus
()
Ответ на: комментарий от Stanson

Я не очень внимательно смотрел. Действительно, пока under development.

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

Может, стоит переписать управляющий софт для своего беспилотника на Аде?

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

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

Отличная новость - никогда раньше не слышал про эти проекты. Под формальной верификацией они имеют в виду SPARK я полагаю?

zabbal ★★★★★
()

Кстати заметьте xeyes и прочие части X11 под капотом. Что в общем-то повторяет запуск тех же xfree386 на Линуксе аж в 1992 году. Хотя тут скорее всего линейный vesa fb, который дело немножко упрощает.

Интересная новость, хорошо заГНУли!

Andrew-R ★★★★
()

Вот это я понимаю, «тихо и незаметно»!

Harliff ★★★★★
()
Ответ на: комментарий от Andrew-R

линейный vesa fb, который дело немножко упрощает.

При современной производительности железа вполне хватает скорости отрисовки графики в иксах,запущенных на vesa fb если комп используется для неигровых и неразвлекательных целей. Даже такие вещи как FreeCAD,KiCAD,OpenScad и Gimp вполне нормально работают,во всяком случае в Линуксе.

хорошо заГНУли!

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

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

К сожалению, в процессе публикации новости заголовок изменился так,что теперь стало из него не очевидно что на Ada написано только ядро,а не вся система. Просьба к модераторам по возможности это поправить.

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

Но надо поизучать вопрос. Поставил себе в мемориз.

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

про Inferno слышали?

Да,слышал когда-то так как периодически из любопытства интересуюсь операционными системами,отличными от «общепринятых». Но насколько я помню - эта на Си написана,а не на Аде. А мне более интересно то что написано на Аде.

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

тормозилово @ глюкалово @ рандеву

spbzip
()
Ответ на: комментарий от watchcat382

А мне более интересно то что написано на Аде

Есть ОС Oberon A2 © – почти «мини-лайт Ада» :)
Ежели в него влить финансы и разработчиков, то можно получить интересный и практичный результат быстрее, чем Gloire.

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

почти «мини-лайт Ада» :)

Это конечно тоже много лучше чем Си,но мне Ада нравится больше. Как познакомился с ней тридцать лет назад так и влюбился :) Язык,идеально совместимый с моим мозгом.

watchcat382
() автор топика
Ответ на: комментарий от watchcat382
MODULE Timer;

IMPORT ACPI, SYSTEM;

TYPE Counter* = SIGNED32;

VAR frequency: Counter;
VAR counter {UNTRACED}: POINTER {UNSAFE} TO RECORD value: SIGNED64 END;

PROCEDURE - GetInstructionTimer(): SIGNED64;
CODE
	RDTSC
END GetInstructionTimer;

PROCEDURE GetCounter- (): Counter;
BEGIN {UNCOOPERATIVE, UNCHECKED}
	IF counter = NIL THEN RETURN  SHORT(GetInstructionTimer() DIV (1024*1024));  (* return millions of instructions *) END;
	ASSERT (counter # NIL); RETURN SHORT (counter.value);
END GetCounter;

PROCEDURE GetFrequency- (): Counter;
BEGIN {UNCOOPERATIVE, UNCHECKED}
	IF counter = NIL THEN RETURN 1024 (* giga instructions as a rough guess *) END;
	RETURN frequency;
END GetFrequency;

Нет, не нравится.

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

Да, но вот что непонятно:

  • Counter* – что означает звёздочка?
  • GetCounter- – что означает минус?
  • неужели обязательно снова писать имя функции после END?
dataman ★★★★
()

поддерживаемого оборудования пока мало

Список совпадает со списком виртуальных машин?

imul ★★★★★
()

На скриншоте пятнистая нерпа почему-то напомнила Гленду из Plan 9

Vinni_Pooh ★★★★★
()

А для чего оно вообще?

one117 ★★★★★
()

что ответят rust-nerds?

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

но мне Ада нравится больше. Как познакомился с ней тридцать лет назад так и влюбился

Всем хочется такую бабу, как Ада Лавлейс.

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

неужели обязательно снова писать имя функции после END?

Это читабельность улучшает. По сравнению с

    }
  }
}

Counter* – что означает звёздочка? GetCounter- – что означает минус?

Это какая-то не совсем Ада. В Аде и тип определяться должен как

Type Counter is SIGNED32;

И функция как

function GetCounter return Counter is ...

А это больше на Оберон похоже.

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

А если Оберон, то звёздочка обозначает экспортное имя.

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

А то крыло не фитилит... :(

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

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

function GetCounter return Counter is ... А это больше на Оберон похоже.

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

В общем, код из операционки Oberon A2.

MichIs
()
Ответ на: комментарий от gns

Настораживает, очень настораживает. Враги стоят у наших границ, а их студенты вспомнили Аду…

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

Компилятор есть, как я понимаю, даже под Линукс (кумир), только вот ссылки со стнаницы на него битые

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

Не, не нашел: времени нет, текучка заела, да и пользы для себя, наверное.

У меня как было: работал с PL/SQL, решил посмотреть на родителя ADA, тем более когда-то в 90е годы, не будучи еще ит-шником, купил книгу по ADA, без компа, без компилятора почитал ее и ничего не понял, кроме того, что это «типа, круто и … платно». Вот и решил все таки узнать про ADA поближе, когда появилась возможность.

Сейчас «Oracle, давай до свидания», соответственно и PL/SQL и ADA.

А Oberon и не трогал, потому что по молодости работал с С/C++/Java/VB, а Oberon-ом, наверное, могли бы увлекаться Дельфийцы.

Сейчас «увлечение» - Rust, Julia, Mojo - в них вижу практическую пользу для себя и время потратил бы там покопаться (когда бы оно появилось после работы).

MichIs
()
Ответ на: комментарий от monk

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

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

Хорошо, но слишком многословно.

«Что бы вы сделали, если бы проектировали Си сейчас? Добавил бы «e» в вызов creat.» (Кен Томпсон)

Многословный код зато легче читать (поэтому и был популярен Кобол).

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

Есть такой диалект Оберона, Component Pascal.

An identifier declared in a module block may be followed by an export mark (" * " or " - ") in its declaration to indicate that it is exported. An identifier x exported by a module M may be used in other modules, if they import M (see Ch.11). The identifier is then denoted as M.x in these modules and is called a qualified identifier. Variables and record fields marked with " - " in their declaration are read-only (variables and fields) or implement-only (methods) in importing modules.

https://blackbox.oberon.org/cp-lang.pdf

В Active Oberon, который в A2, вероятно, так же.

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

вот попишете на модулах/оберонах зарезервированные слова в верхнем регистре - мало не покажется. особенно если нет автокомплита. отрастите мизинец, целящийся в shift, размером в ногу.

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

вот попишете на модулах/оберонах зарезервированные слова в верхнем регистре

Не знаю как на модулах/оберонах, но но PL/SQL, ADA, наверное, на Pascal ключевые слова, идентификаторы регистронезависимы - это раз.

Два - современные IDE обеспечивают форматирование в нужном стиле.

Три - действительно текст программы, когда ключевые слова и конструкции в верхнем регистре, а имена переменных, типов, пакетов, функций и т.д. в нижнем чисто визуально упрощает понимание логики программы (это кстати одна из рекомендаций Стивена Фейрштейна - одного из гуру PL/SQL - как он написал «3х-мерность кода») и упрощает поддержку (но не стоит забывать, что «Писать на фортране можно на любом языке»)

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

Два - современные IDE обеспечивают форматирование в нужном стиле.

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

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

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

Я начинал работать на одноцветных дисплеях и даже тот самый принтер немного застал. И мне действительно больше нравится «подсветка регистром» чем сильно попугаистая цветная раскраска программного кода в некоторых редакторах,которую я видел у знакомых программистов. Безусловно, это личные предпочтения, но мельтешение цвета вполне заметно мешает мне сосредоточиться при чтении кода.

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

отрастите мизинец, целящийся в shift

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

Впрочем - писать всё в одном регистре в Аде никто не запрещает. Это не Питон с его значащими пробелами,где в случае если их расстановка не понравится машине то код не работает. Я когда впервые с этим столкнулся был сильно удивлен такому возвращению к перфокартам ЕС ЭВМ где пробелы тоже были значащие. Думал что от этого неудобства давно ушли,однако нет - кому-то это видимо показалось удобным. Вот уж действительно - удобства штука очень субъективная. Кто-то и на Си пишет так что код напоминает результат работы какого-нибудь обфускатора.

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

продаю бизнес идею. нужны педали - shift/ctrl/alt. тогда дело в программировании пойдет шыбче, и сдвинется с мертвой точки.

ведь проще жать на педаль shift, чем удерживать клавишу мизинцем. мизинец не казенный, он есть просит.

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

Именно. Но если код смотреть, то там много где SPARK mode off.

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