дневник Яос

Только технические вопросы по ЯОС и MINOS. Терминология и прочее - в других форумах.
БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 07.07.21 10:01

Тяжело работать без удобного формата представления структурированных данных. Взялся сначала за json, но ведь json убогий:

https://habr.com/ru/company/mailru/blog/314014/

И парсер оказался довольно большим. Поэтому начал впиливать вот этот лисп: https://github.com/zick/Oberon2Lisp - оказалось, что в A2 есть ограниченная поддержка процедур в стиле Оберона-2. Но разница между ограниченной и работающей в данном случае состояла в том, что компилятор падал. Потратил немало времени, чтобы это поправить, но в итоге понял, что слишком сложно и не стоит требуемых усилий. Завёл ошибку и оставил это как есть: https://gitlab.com/budden/ja-o-s/-/issues/67

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 09.07.21 18:35

Лисп вроде интегрировал, он способен читать данные из строки. Как он вычисляет - не проверял, но это и не нужно. Меньше нужно интерпретаторов, а один интерпретатор в ЯОС уже есть (жаль, я не умею им пользоваться). Надо теперь, чтобы научился читать из потока и тогда можно будет передавать командам ЯОС в качестве параметров структурированные данные, ради чего, собственно, всё и затевалось.

Также поправил документацию: добавил общее оглавление описания языка, добавил непереведённую главу о средствах поддержки параллельности и написал документ о командах ЯОС и особенно о формате их аргументов. Это создаёт предпосылки для интеграции чтеца s-выражений в механизм команд.

Очевидно, что я не успею сделать инструмент замены по файлам, придётся радоваться тому, что есть инструмент поиска, способный, хоть и костыльно, искать слова в разных словоформах. Хотя он и кривой, но с научной точки зрения интересный результат уже получен. Такого инструмента я не видел ни в одной IDE (хотя я не такой уж знаток IDE).

До создания инструмента поиска с заменой нельзя говорить о наличии поддержки в ЯОС словоформ русского языка, а при том такие идентификаторы в ЯОС уже есть и работа с ними будет создавать неудобство.

В общем, нужно составить план заморозки проекта (или его перевода в режим сверхнизкой интенсивности).

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 10.07.21 23:50

Начал впиливать в закрытую версию ввод s-выражений, а точнее, их слегка инновационного аналога.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 13.07.21 00:29

Доделал в закрытой ветке опции в виде s-выражений. Забросил в пару мест удочку про программиста вместо себя.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 13.07.21 18:26

В закрытой ветке сделал кривокостыльную команду "вернись назад". Без неё ад был, теперь будет полегче. Правда, при редактировании файла история в нём съезжает. Но это всё равно лучше, чем ничего.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.07.21 00:53

За последнее время ещё ряд изменений в закрытой ветке, в т.ч. переиспользование уже открытого редактора при запросе на открытие файла в ИСР, поиск по словам. Теперь нужно сделать поиск/замену во многих файлах, в т.ч. интерактивную. Задача выглядит масштабной, страшно браться. Не могу понять, как быть с закрытостью ветки. По идее проект в целом никому не нужен, а идеи, которые можно из него выдернуть украсть, уже начали появляться в коде, их уже две появилось за последний месяц. Предыдущие идеи касались исключительно русскоязычности и их наоборот хотелось раздать (правда, 1С их не взял, к примеру). А то, что появилось в последнее время - не является специфически русскоязычным. В этом случае имеет смысл развивать проект закрытым. С другой стороны, те, кто высказывал недоверие и опасения, что я закрою проект, и не помогали якобы по этой причине, получат подтверждения своих опасений. Поэтому говорю так: будете помогать делом - открою. Будете стоять и наблюдать - наблюдайте за анонсами. На самом деле не помогали не потому, что боялись закрытия, а по каким-то иным причинам (например, на свои проекты времени не хватало и много других причин). Поэтому проблемы с закрытостью не вижу пока что. С другой стороны, в закрытом формате даже предпосылки к получению добровольческой помощи исчезают. Хотя какая разница, предпосылки-не предпосылки, реальную помощь делом за последние два года задаром мне оказали только два раза.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 19.07.21 02:09

Пытаюсь добить поиск c заменой. Невзирая на имеющееся временное окно, делать ещё довольно много:

* нужно сделать скоординированный интерфейс из двух разных окон, чтобы был список файлов с находками и открывался в редакторе в особом режиме конкретный файл. Получается вообще кривовато во многих отношениях, но работать будет можно
* обеспечить сбор всех найденных словоформ и формирование команды замены
* доделать Б-выражения, потому что они используются для ввода параметров. Переписал чтение б-выражений, чтобы никто не придрался, что я что-то украл у японца (впрочем, понятно, что и так никому дела нет).

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 21.07.21 01:29

Неожиданно, в этом чудовищном манипулировании окошками появился какой-то просвет и можно сказать, что поиск по файлам почти готов. Но поскольку я не умею писать UI приложения вообще, а уж на ЯОС - и подавно, то, результат, видимо, не раз ещё заставит выругаться.

Теперь нужно доделать поиск и сделать замену.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 23.07.21 00:01

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 24.07.21 00:45

Продвинул Б-выражения, теперь передавать данные из списка находок в редактор. Остаётся 2-3 дня до завершения функционала поиска и замены в файлах. Т.е. похоже успеваю до выхода на новую работу закончить эту часть, и можно будет приступать к кумиризации.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 24.07.21 23:56

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

https://www.youtube.com/watch?v=iT64Z_OU3Mc

Исходники выложил в публичную ветку.

Также пополнил документацию информацией о найденных аналогах типа Variant из Дельфи. Их нашлось немало, но все с каким-то уклоном, в итоге подобрать для моей конкретной задачи не вышло. См.

https://gitlab.com/budden/ja-o-s/-/blob ... ые-типы.md

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 06.08.21 23:01

В связи с наличием интересующегося, описал 4 задачи по доработке:

https://www.youtube.com/watch?v=dOEnfAezRlQ

https://www.youtube.com/watch?v=qjtFB6jwDD0

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 12.08.21 23:13

Запущен пилотный проект по привлечению фрилансеров, тенденции более-менее обнадёживающие, о результатах говорить рано. Посмотрел видео про билингвизм и мозг, существенных аргументов против билингвизма не нашёл.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 16.08.21 00:45

Начал допиливать Б-выражения до чуть более законченного вида, и по ходу дела пришлось допилить уже работающий поиск в файлах - теперь можно передавать в него несколько масок для поиска - одной явно не хватает, т.к. часть модулей имеет расширение "ярм" , а большинство - "Mod".

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 16.08.21 23:15

Ещё немного улучшил поиск и замену по файлам - теперь там можно открыть файл не только для продолжения поиска, а и просто для работы.
Также по F1 выводится минимальная справка.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 05.09.21 17:41

Кумиризируем потихоньку. Исходник в экспериментном виде выглядит так:

Код: Выделить всё

модуль Проба;

алг Проверка():цел32;
перем й: цел32;
нач
	нцДля й := 0 до 7 делай
		если й = 2 то
			УТВ(й = 2);
			й := й;
		иначе
			й := 100;
		всё 
	кц;
	неважно Проверка();
кон Проверка;
	
кон Проба. 

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 08.09.21 23:47

В системном меню, пункт справка/документация открывает директорию с документацией в формате markdown. Никакой поддержки формата пока нет - файлы открываются просто как текст.

Аватара пользователя
Сандро
Сообщения: 86
Зарегистрирован: 07.10.18 14:39

Re: дневник Яос

Сообщение Сандро » 13.09.21 22:48

БудДен писал(а):
08.09.21 23:47
Никакой поддержки формата пока нет - файлы открываются просто как текст.
Самый простой способ поддержки маркдоуна — здесь.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 15.09.21 00:14

Не понял. В ЯОС нет javascript, а html едва есть. В этой ситуации данный метод приемлем?

P.S. и чтобы два раза не писать, что нового в ЯОС:
  • Идёт непростая работа по переводу встроенных имён
  • В проработке уже не один, а два варианта использования ЯОС для школьников
  • Сделали "диск" ЯОС:, указывающий на корень ЯОС - пока только Win32, но цена вопроса - одна строчка в конфиге
  • Убрал ограничения в процедуре переименования символов, затеняющих более глобальные одноимённые - теперь оно должно срабатывать за один проход

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 19.09.21 14:52

Сделал в компиляторе режим --переименуйИдентификаторыПоИменам, который переименовывает идентификаторы с данным именем в другое имя (не работает для модулей). Он нужен, чтобы превратить MOD в mod и понизить регистр некоторых других встроенных функций. Прямо в лоб это сделать не получается, потому что в коде довольно много переменных с именем "mod". Описание

В отличие от него, старый решим переименования (он теперь называется --переименуйИдентификаторыПоПутям) переименовывал только конкретные идентификаторы, определяемые по пути вложенности синтаксических конструкций. Например, им можно переименовать МодульА.ОобъектБ.Поле1 в Поле2 и все его использования, и при этом не трогать Модуль1.ОбъектВ.Поле1 (т.к. к нему ведёт другой путь).

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 20.09.21 00:06

Меня тошнит от этого:

Код: Выделить всё

		DeclareTypeR(system.characterType,"CHAR","сим8",system.globalScope);
		DeclareTypeR(system.rangeType,"RANGE","отрезокЦелых",system.globalScope);
		DeclareTypeR(system.integerType,"INTEGER","системноЗависимоеЦел",system.globalScope);
		DeclareTypeR(system.longIntegerType,"LONGINTEGER","длинноеСистемноЗависимоеЦел",system.globalScope);
		DeclareTypeR(system.integerSetType,"INTEGERSET","мнвоНаБитахРазмераСистЗавЦел",system.globalScope);

		DeclareTypeR(Signed8, "SIGNED8", "цел8", system.globalScope);
		DeclareTypeR(Signed16, "SIGNED16", "цел16", system.globalScope);
		DeclareTypeR(Signed32, "SIGNED32", "цел32", system.globalScope);
		DeclareTypeR(Signed64, "SIGNED64", "цел64", system.globalScope);

		DeclareTypeR(Unsigned8, "UNSIGNED8", "бцел8", system.globalScope);
		DeclareTypeR(Unsigned16, "UNSIGNED16", "бцел16", system.globalScope);
		DeclareTypeR(Unsigned32, "UNSIGNED32", "бцел32", system.globalScope);
		DeclareTypeR(Unsigned64, "UNSIGNED64", "бцел64", system.globalScope);

		DeclareTypeR(Float32, "FLOAT32", "вещ32",system.globalScope);
		DeclareTypeR(Float64, "FLOAT64", "вещ64",system.globalScope);

		DeclareTypeR(Complex32, "COMPLEX32", "компл32", system.globalScope);
		DeclareTypeR(Complex64, "COMPLEX64", "компл64", system.globalScope);

		DeclareTypeR(system.realType,"REAL","машинноЗависимоеВещ", system.globalScope);
		DeclareTypeR(system.complexType,"COMPLEX","машинноЗависимоеКомпл", system.globalScope);
		DeclareTypeR(system.booleanType,"BOOLEAN","лог",system.globalScope);
		DeclareTypeR(system.setTypeA,"SET","мнвоНаБитахРазмеромСАдрес",system.globalScope);
		DeclareTypeR(system.anyType,"ANY","динамическиТипизированныйУкль",system.globalScope);
		DeclareTypeR(system.objectType,"OBJECT","окласс",system.globalScope);

		DeclareTypeR(Set8, "SET8", "мнвоНаБитах8", system.globalScope);
		DeclareTypeR(Set16, "SET16", "мнвоНаБитах16", system.globalScope);
		DeclareTypeR(Set32, "SET32", "мнвоНаБитах32", system.globalScope);
		DeclareTypeR(Set64, "SET64", "мнвоНаБитах64", system.globalScope);

		(* глобальные функции. Если меняешь тут, ищи в другом месте вызовы NewBuiltinIdentifier *)
		NewBuiltinR(Abs,"ABS","abs",system.globalScope,TRUE); (* prospero78/Oberon07ru. в КуМире - abs *)
		NewBuiltinR(Ash,"ASH","арифмСдвиг",system.globalScope,TRUE);
		NewBuiltinR(Cap,"CAP","ASCII_вЗаглавную", system.globalScope,TRUE);
		NewBuiltinR(Chr,"CHR","Сим8ИзКода",system.globalScope,TRUE); (* И21 - нет, Глагол - ВЗНАК, 1С - Симв, Oberon07ru = ВЛИТ *)
		NewBuiltinR(Entier,"ENTIER","округлиВниз",system.globalScope,TRUE); (* 1С - Цел, КуМир - int, Русская википедия - "пол", Excel - ОКРВНИЗ *)
		(* NewBuiltin(Entier,"FLOOR","",system.globalScope,TRUE); (* дублирует ENTIER и не входит в стандарт *) *)
		NewBuiltinR(EntierH,"ENTIERH","округлиВниз64",system.globalScope,TRUE); (* в A2 рекомендуется цел64(плавающееЗначение) *)
		NewBuiltinR(Len,"LEN","длина",system.globalScope,TRUE); (* из Глагола; переделать в псевдо-метод *)
		NewBuiltinR(Long,"LONG","устарПреобразуйКБолееШирокомуЦел",system.globalScope,TRUE);
		NewBuiltinR(Max,"MAX","max",system.globalScope,TRUE);
		NewBuiltinR(Min,"MIN","min",system.globalScope,TRUE);
		NewBuiltinR(Odd,"ODD","нечётноеЛи¿",system.globalScope,TRUE); (* Глагол *)
		NewBuiltinR(Ord,"ORD","КодСим8",system.globalScope,TRUE); (* И21 - НОМЕР, Глагол - ВЦЕЛ, Oberon07ru - НЛИТ, 1С - КодСимвола. Не забываем про перечисления! Сейчас они получаются 
			преобразованием типов! *)
		(* нигде не используется
			NewBuiltin(Ord32,"ORD32",system.globalScope,TRUE);
		   *)
		NewBuiltinR(Lsh,"LSH","логСдвиг",system.globalScope,TRUE);
		NewBuiltinR(Rot,"ROT","вращБит",system.globalScope,TRUE);

		NewBuiltinR(Ror,"ROR","вращВправоБит", system.globalScope,TRUE);
		NewBuiltin(Rol,"ROL","вращВлевоБит", system.globalScope,TRUE);
		NewBuiltinR(Shl,"SHL","логИлиАрифмСдвигВлево", system.globalScope,TRUE);
		NewBuiltinR(Shr,"SHR","логИлиАрифмСдвигВправо", system.globalScope,TRUE);

		NewBuiltinR(Incr,"INCR","увел",system.globalScope,TRUE);

		NewBuiltinR(Short,"SHORT","устарПреобразуйКБолееУзкомуЦел",system.globalScope,TRUE);
		NewBuiltin(Sum,"SUM",system.globalScope,TRUE);
		NewBuiltin(Dim,"DIM",system.globalScope,TRUE);
		NewBuiltin(Cas,"CAS",system.globalScope,TRUE);

		NewBuiltin(First,"FIRST",system.globalScope,TRUE);
		NewBuiltin(Last,"LAST",system.globalScope,TRUE);
		NewBuiltin(Step,"STEP",system.globalScope,TRUE);

		NewBuiltinR(Re,"RE","Re",system.globalScope,TRUE); (* КуМир - переделать в псевдо-метод *)
		NewBuiltinR(Im,"IM","Im",system.globalScope,TRUE);

		NewBuiltin(systemAdr,"ADDRESSOF",system.globalScope,TRUE);
		NewBuiltin(systemSize,"SIZEOF",system.globalScope,TRUE);

		(* global proper procedures *)
		NewBuiltinR(Assert,"ASSERT","утв",system.globalScope,TRUE); (* КуМир *)
		NewBuiltin(Copy,"COPY",system.globalScope,TRUE);
		NewBuiltinR(Dec,"DEC","умень",system.globalScope,TRUE);
		NewBuiltin(Excl,"EXCL",system.globalScope,TRUE);
		NewBuiltin(Halt,"HALT",system.globalScope,TRUE);
		NewBuiltinR(Inc,"INC","увел",system.globalScope,TRUE);
		NewBuiltin(Incl,"INCL",system.globalScope,TRUE);
		NewBuiltinR(New,"NEW","нов",system.globalScope,FALSE);


БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 20.09.21 00:13

Воют между собой КуМир, 1С, Excel, Глагол, школьная сборка, школьная и не школьная алгебра. При этом они все заточены совершенно под разное, и получается "коня и трепетную лань".

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

Но в современной идеологии "чистого кода" слова должны быть подробными. А по моей идеологии, частые слова должны быть короткими, а редкие - подробными. Да ещё и на русском, в котором, ессно, сроду не было никаких ASH и ROT.

И кроме того, есть слова (например, "длина"), которые было бы неплохо не занимать и оставить пользователю.

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

Аватара пользователя
Сандро
Сообщения: 86
Зарегистрирован: 07.10.18 14:39

Re: дневник Яос

Сообщение Сандро » 20.09.21 14:33

БудДен писал(а):
15.09.21 00:14
В этой ситуации данный метод приемлем?
- Поспешил я... (но в будущем, авось, сгодится)))
А вот эти строки могут спокойно попасть под сокращения:
БудДен писал(а):
19.09.21 14:52
переименуйИдентификаторыПоИменам
переименуйИдентификаторыПоПутям
А если "идентуйИменами", или "идентуйПутями"... (?)
Учитывая, что идентификатор — это и есть некий "суррогат имени", то налицо - тавтология (переименуйИменаторы).
У резидента и президента - один корень идентификации; — "идент", который и идентифицирует их представительство в соответствующих кругах.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 20.09.21 21:29

Про маркдаун - понял.
Эти ключи компилятора редко используются, их необязательно сокращать.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 23.09.21 22:19

Кумиризация языка отменена. Причина - она никуда не попала. Есть спрос на две вещи:

* переходный язык от программирования блоками к текстовому, близкий к Паскалю и пригодный для работы с исполнителями

В этом случае образцом, от к-рого нужно не отстать, является Scratch, где слова в командах - полные и без сокращений, либо PascalABC, а это богатый язык, в котором сокращение до 3 букв узкого набора понятий, нужных в КуМире (очевидно, в ущерб остальным) не имеет значения. Кроме того, переход происходит не от КуМира и совместимость с КуМиром не имеет значения.

* роботы Лего

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 23.09.21 22:25

Что-то я себя сам пока не очень убедил и слегка выпал из контекста... Т.е. кумиризация отменяется не полностью, потому что циклы, "нач", "кон" и "всё" выглядят вполне разумно.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 25.09.21 23:56

Немного попереводил встроенные имена. Смирился с их ужасным видом.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 27.09.21 13:11

Вчера пытался собрать переведённый ЯОС, правлю вновь всплывшие проблемы, появившиеся из-за того, что движок перевода не всё правильно обрабатывает. Попутно немного добавлял/менял переводы.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 02.10.21 03:34

Правлю дичайшую багу, связанную с кешированием результатов работы компилятора и переводчика. По сути дела, на это ушла вся последняя неделя (т.е. свободное от работы время, к-рого оставалось маловато). При этом перевёл много встроенных имён (чтобы было проще её локализовать). Мне не нравится, как всё это в итоге выглядит, но "не стреляйте в пианиста". Видимо, скоро будут новые цифры по степени кирилличности.

При этом, названия встроенных конструкций приближены к КуМиру. Обозначение конца конструкции как "кн" почему-то вызывало постоянную критику, хотя я по-прежнему считаю, что это название было лучше любого другого, и замена его на трёхбуквенные "кон" или "всё" на самом деле большая потеря в плотности текста. Но уж тут как получается.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 02.10.21 23:55

Багу вроде поправил, но прорыв в кириллизации отменяется (или я неправильно померял). Почему-то осталось 22%. Посмотрим потом. Смиряюсь с тем, что машинно-зависимые типы останутся надолго, думаю о более коротких названиях для них. Немного поправил парсер редактора. Пока всё же не перевожу на русский, нужно, чтобы переводы ещё устоялись.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 10.10.21 22:37

Заменял "литеру" на "символ", а также начал переводить один из основополагающих модулей - Streams.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 15.10.21 22:41

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 16.10.21 23:26

Модуль Streams вроде доперевёл, правлю ошибки по мелочи. Сделал "переход к определению" для многих (не для всех) встроенных типов и процедур - открывается как бы модуль, но на самом деле это файл справки. Поскольку после перевода встроенных процедур я многое в тексте сам перестал понимать :)

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.10.21 15:56

ЯОС собралась с русскоязычными потоками, индекс кирилличности достиг 26.7%. Однако нашлась ошибка в движке перевода - буду править, а потом придётся, видимо, всё повторить.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 19.10.21 23:35

При попытке перевести ещё более фундаментальный модуль KernelLog столкнулся с местом, где двухъязычность ещё не реализована.
Пытаюсь чинить, план действий есть, слегка продвинулся по нему.

MihalNik
Сообщения: 244
Зарегистрирован: 05.11.18 11:02

Re: дневник Яос

Сообщение MihalNik » 21.10.21 20:44

БудДен писал(а):
15.10.21 22:41
Между тем, я уволился из прекрасного стартапа, где всё было хорошо до того момента, пока меня не попросили приостановить свой проект, чтобы он не мешал работе.
В смысле на работе отвлекал народ им или отбирал свое время?

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 21.10.21 22:28

Нет, они заявили своё недовольство, что я занимаюсь своим проектом, и даже то, что это не в рабочее время, их не убедило. Типа я буду уставать и мне не будет хватать сил на работу.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 21.10.21 22:50

Перевёл модуль KernelLog, вот он:

https://gitlab.com/budden/ja-o-s/-/blob ... nelLog.Mod

(переведён только интерфейс)

Индекс кирилличности 28,2%, однако движок перевода не совсем работает - приходится пока что кое-что делать руками. Правлю. Данная проблема всплыла по той причине, что вызовы процедуры из этого модуля подставляются компилятором в генерируемый код особым образом, а сами процедуры при этом ищутся по имени модуля и процедуры. Ранее не было учтено, что эти случаи требуют перевода.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 23.10.21 00:47

Вроде починил движок перевода, теперь, поскольку явных идей нет, хочу сделать что-то типа лиспового отладчика. Естественно, полностью такой же не выйдет ввиду ограничений языка и рантайма, но хотя бы инспектировать стек должно стать намного легче. А также нужно доехать до места, где лежит RPi и ещё раз, более вдумчиво, попробовать на ней оживить существующую сборку A2.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 24.10.21 00:26

Внезапно сделал минимальный инспектор и даже интегрировал с чем-нибудь, и даже завёл встроенную процедуру для его вызова. Теперь можно остановить (почти) любую активность и изучить её стек, вставив в код вызов встроенной процедуры "Инспекция". Конечно, не хватает ещё вычисления выражений в текущем кадре стека, как в нормальных отладчиках, но это уже проект. Нужно доделать тягомотные переводы для модулей Reflection, PodrobnajaPechatq и Trace и, видимо, заниматься портированием на ARM вплотную. Неделю я уже без работы отдохнул, много отдыхать не выйдет.

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 25.10.21 09:03

Перевёл ещё один фундаментальный модуль, Trace. Индекс кирилличности 28.3%. Видимо, жирные куски теперь не так скоро попадутся. Потоки и логЯдра - это были очень жирные модули с массой клиентов. Так или иначе, индекс кирилличности за этот год вырос на 10%. Если и дальше продолжать в том же темпе, то через каких-нибудь 10 лет перевод ЯОС на русский язык будет завершён. Хотя понятно, что дальше будет медленнее, поскольку богатые месторождения вырабатыватся первыми, а потом порода становится более тощей. В нашем случае основные богатства уже извлечены на-гора.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 28.10.21 01:03

Есть определённые успехи с RPi2, см. соседние темы.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 04.11.21 01:25

Версия под RPi частично запустилось в qemu. Хотя похоже, что она падает в QEMU иначе, чем на настоящей плате, это, конечно же, плохо.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 04.11.21 15:13

Добился идентичного поведения.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 05.11.21 21:14

Описана работа с Raspberry Pi 2 b v 1.1 : https://gitlab.com/budden/ja-o-s/-/comm ... d611bc58a0

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 06.11.21 23:05

Запустил ЯОС на Zybo (по-прежнему без периферийных устройств).

https://gitlab.com/budden/ja-o-s/-/tree/Zybo-Z710-ЯОС-2

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 08.11.21 23:50

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 10.11.21 00:40

Начал добавлять предупреждение об опасном преобразовании между типами адресВПамяти и размерМЗ и как-то завяз в этом. Компилятор с моими изменения падает в самых неприятных местах. А уже 10-е... Видимо, надо прогнать только те файлы, которые надо, этим компилятором, найти проблемное место и откатить все эти изменения. В другой раз, когда будет больше времени и сил. Единственное, в одном месте локализовалось, что типы не преобразовались, хотя должны были. Может через это как-то удастся раскрутить цепочку того, где я что сломал.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 17.11.21 00:48

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 20.11.21 02:20

Макросы очередной раз почти сделаны, т.е. имеется пример, который мог бы быть реально полезным, если в нём ещё исправить какое-то количество багов... Однако всё ещё есть куча проблем.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 25.11.21 02:22

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 26.11.21 23:36

Существенно поменял отладчик, можно сказать, совершил прорыв в контролируемости того, что там происходит. Не проверял в реальном бою, но на тестовом файлике кардинальные улучшения. Теперь есть предпосылки для того, чтобы реализовать удалённую отладку. Хотя тут будет немало работы по моделированию метаданных целевой системы - ведь в настоящее время отладчик берёт модули прямо из той системы, которую мы изучаем. А если мы с Win32 будем отлаживать систему, работающую на RPi, то метаданные у этих систем будут совсем разные. Так что этот проект ещё, можно сказать, далеко впереди. Ну и соответственно нужно разделить отладчик на слои - командный интерфейс отдельно, гуй отдельно. Пока что там всё смешано.

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 29.11.21 00:17

Вроде сделал, чтобы в распечатке стека и в отладчике показывался "сам" объект для методов объектов. Беэ этого было изрядно неудобно.
Изменения, внесённые в компилятор, явно за пределами моего понимания. Система этим компилятором дважды пересобралась и работает, но кто знает, какие грабли ещё ждут впереди...

Отладчик проверен в бою, периодически что-то происходит нехорошее, но в целом более-менее работоспособен.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 15.12.21 02:38

По Alt-Enter открывается "меню окна", подобно тому, как работает Alt-пробел в Windows. Дальше можно нажать 4 (на левую половину экрана), 5 (на ввесь экран) или 6 (на правую). Наверное, для полноты картины нужно все новые окна сразу ставить на левую половину экрана, а там дальше пользователь уже пусть сам размещает. И, конечно, в это меню нужно ещё несколько вариантов, но там получились ужасные повторы кода, и кроме того, меню будет слишком длинным. Не знаю, как быть пока что. Но уже большой шаг вперёд - я мечтал о возможности делать окно на полэкрана с самого начала проекта и вот наконец-то. Посмотрим, какие подводные камни всплывут...

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 16.12.21 01:02

Движемся в направлении симв32

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.12.21 22:53

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 22.12.21 01:33

Начал внедрять симв32 в модуль Texts - уже не уверен, что стоило начинать. Нужно перешагнуть пропасть с тысячами изменений в более чем 10 модулях. Достаточно одной ошибки - и система просто не заработает. Сегодня, наверное, уже изменений 500 сделал и неизвестно сколько ещё впереди.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 27.12.21 23:27

Сделал встроенную процедуру пПиши, которая выводит в любом месте любой указатель на запись вместе с полями. Раньше такая процедура была в модуле "к", неудобство состояло в том, что нужно было подключать/отключать этот модуль и сигнатура исследуемого модуля менялась. Теперь необходимость в подключении модуля "к" отпала.

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

Код: Выделить всё

модуль Proba;

(* Proba.Дей ~ *)
использует Strings, StringsUCS32;

тип з = окласс
	перем пп : цел32;
	вв : Strings.String кон з;

проц Дей*;
нач
	перем Строка8 := Strings.NewString("2") : Strings.String;
	Строка8 := Строка8 + 2;

	перем Строка := StringsUCS32.NewString(Лит32("2")) : StringsUCS32.String;
	Строка := Строка + 2;
	копируйСтрокуДо0(Строка^,Строка^);
	
	перем эз : з;
	
	нов(эз);
	эз.пп := 4;
	эз.вв := Strings.NewString("Куку");
	
	пПиши(эз,Строка^);
	кон Дей;
	
кон Proba.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 15.01.22 14:26

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

А может быть, дело в другом, не знаю.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 19.01.22 01:41

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 23.01.22 23:44

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 27.01.22 00:09

Немного попереводил.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 28.01.22 16:10

Перевёл (не полностью) модуль Builtins - самый первый по порядку модуль.
Правда, он мало используется.

Индекс кирилличности - 29.03%, а на графике последний раз был 28.88% - негусто.
Надо дописать программку для замера доли слов и эту цифру тоже на график вывести - теперь
доля русских букв будет расти всё медленнее, а доля русских слов ещё долго будет
расти с одинаковой скоростью.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 31.01.22 00:54

Начал переводить модуль Machine. Улучшил работу веб-браузера (всё ещё только http).

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 03.02.22 00:28

Кое-как доделал переводы модуля Machine/ЭВМ для версии Windows, открыл версию для BIOS32, а там, оказывается, есть ещё объём работы...

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 04.02.22 20:55

Написал письмо в МЦСТ, где предлагаю им взять меня на работу и дать мне 10 человек подчинённых. Ха-ха.
Перевод модуля ЭВМ/Machine упёрся в то, что переводчик не заходит внутрь машинного кода, соответственно, после перевода всё ломается.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 08.02.22 16:51

С грехом на 9/10 перевёл модуль Machine - скорее можно сказать "показал присутствие", чем "перевёл". Хотя если посмотреть на использование в модуле Heaps - то вроде всё выглядит переведённым. Проблема с этим модулем была в двух вещах:

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 08.02.22 20:56

Реализовал "тернарное если", если3(условие, выражениеПриИстине, выражениеПриЛжи) - пока только для одного компилятора и только в англоязычной ветке.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 24.02.22 01:54

Починил загрузку с LiveCD.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 10.03.22 22:13

Начал переводить модуль UCS32

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 12.03.22 01:00

Продолжил.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 16.03.22 01:09

Вроде доделал UCS2 = Ю16, начал String = Строки8.
Клонировал проект на git.org.ru и отправил последние изменения туда.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 25.03.22 01:44

Перевёл 4 модуля, индекс кирилличности - 30.43%

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 04.04.22 23:41

Дочитал код загрузки кооп.версии и выделил все куски, написанные на ассемблере.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 06.04.22 00:10

Продолжаю чтение загрузки Zynq. Что-то там много всего...

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 11.04.22 23:57

Похоже, что зависаем в ReadMemoryLayout, хотя казалось бы, где там зависать?
Надо сделать именованные процедуры Breakpoint1, BreakpointN и по ним размечать трассу с целью
поиска, где зависли. Ы?

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 21.04.22 01:36

По RPi ещё с тех пор продвинулся, теперь падаем на утверждении где-то в чтении памяти (уже не помню, но надеюсь, что где-то записано).

Сегодня перешёл в другую ветку и сделал, чтобы подробная печать работала на 64-разрядах, в сборках Linux64 и Win64.
См. https://tvoygit.ru/budden/ja-o-s/src/br ... ная-печать

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 22.04.22 12:23

Выложил новую сборку под Линукс.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 15.06.22 19:30

На форуме можно подсвечивать код на языке ЯОС, с помощью кнопочке "JAOS". Вот так:

Код: Выделить всё

модуль ааа;
проц бб(); (* комментарий *)
(* вложенный
  (* комментарий *) *)
нач
  возврат 4 кон бб;

кон ааа.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 07.08.22 12:03

Пытаюсь запустить переводчик всего под линуксом, и он спонтанно зависает. Место, где зависает, всегда одно и то же. Но плохо это всё выглядит, т.к. он зависает через значительное время.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 07.08.22 12:12

Ура, повезло - с помощью диспетчера задач удалось неплохо локализовать проблему. В общем-то это во многом случайность, что именно этот процесс оказался в первой строчке и я обратил на него внимание. Команда СборщикВыпускаЯОС.Скомпилируй:

Код: Выделить всё

Unix.CondWait:72 pc=134581358 [0000000008058C6EH] = 134581286 + 72 crc=72910ABE
  con= [@24] 00007FF470001F40
  mtx= [@16] 00007FF46C000C00
Objects.Await:522 pc=134821788 [000000000809379CH] = 134821266 + 522 crc=55A1660C
  cond= [@40] UnixFiles.WaitClose.@AwaitProcedure0
  slink= [@32] 00007FF44FAA6A98
  obj= [@24] 000000000810B0F0 (Modules.Module)
  flags= [@16] {}
  hdr= [@-16] 000000000810B070 (Heaps.ProtRecBlockDesc)
  p= [@-24] 00007FF4039C0940 (Objects.Process)
  c= [@-32] 0000000000000000 NIL
  lock= [@-40] 00007FF48958B200 (Objects.LockT)
UnixFiles.WaitClose:121 pc=135308883 [000000000810A653H] = 135308762 + 121 crc=F85F95DA
  no= [@16] -1816
UnixFiles.UnixOpen:239 pc=135288446 [000000000810567EH] = 135288207 + 239 crc=F85F95DA
  path= [@32] 00007FF44FAA6B08
  flags= [@24] {1}
  permissions= [@16] 0
  fd= [@-12] -1
  fo= [@-16] -1816
  errno= [@-20] 24
  failure= [@-21] ложь
UnixFiles.UnixFileSystem.Old0:698 pc=135286270 [0000000008104DFEH] = 135285572 + 698 crc=F85F95DA
  name= [@16] "FractalDemo.Mod"#00""
  RESULT=00007FF44FAA6DD8-> [@56] 0000000000000000 NIL
  @Self= [@40] 00007FF489545A50 (UnixFiles.UnixFileSystem)
  f= [@-16] 0000000000000000 NIL
  stat= [@-160] ...(Unix.Status)
  fd= [@-164] 0
  r= [@-168] 0
  pos= [@-172] 82
  oflags= [@-176] {38, 36, 33, 1}
  nextdir= [@-432] "/y/jaos/Linux64/xym-i-Dpi"#00""
  path= [@-688] "/y/jaos/source/FractalDemo.Mod"#00""
  @hiddenIRVar0= [@-696] 0000000000000000 NIL
UnixFiles.AliasFileSystem.Old0:59 pc=135281146 [00000000081039FAH] = 135281087 + 59 crc=F85F95DA
  name= [@16] "FractalDemo.Mod"#00""
  RESULT=00007FF44FAA6E20-> [@64] 0000000000000000 NIL
  @Self= [@40] 00007FF489545B00 (UnixFiles.AliasFileSystem)
  f= [@-16] 0000000000000000 NIL
Files.OpenOld:221 pc=135204539 [00000000080F0EBBH] = 135204318 + 221 crc=8F46417A
  enum= [@40] 00007FF4895451C0 (Files.FileSearcher)
  fs= [@32] 00007FF489545B00 (UnixFiles.AliasFileSystem)
  fname= [@16] "FractalDemo.Mod"#00""
  RESULT=00007FF44FAA6E80-> [@360] 0000000000000000 NIL
  f= [@-16] 0000000000000000 NIL
  key= [@-20] 0
Files.Old:345 pc=135205245 [00000000080F117DH] = 135204900 + 345 crc=8F46417A
  name= [@16] "FractalDemo.Mod"#00""
  RESULT=00007FF44FAA6FF0-> [@-837622864] 0000000000000000 NIL
  fs= [@-16] 00007FF489545B00 (UnixFiles.AliasFileSystem)
  f= [@-24] 0000000000000000 NIL
  prefix= [@-40] ""#00""
  fname= [@-312] "FractalDemo.Mod"#00""
  @hiddenIRVar0= [@-320] 0000000000000000 NIL
СборщикВыпускаЯОС.ДанныеОб1Конфигурации.ПроверьНаличиеФайловИПрочтиОбъявленияИспользования:273 pc=140687342532721 [00007FF453137871H] = 140687342532448 + 273 crc=ECEE17A0
 

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 07.08.22 12:23

В чём точно дело - не совсем ясно, но похоже, что мы упираемся в предел числа открытых файлов. "Прекрасная" идея закрывать файлы в финализаторах нас подвела. Ищем, как закрыть файлы явно и засунем это в компилятор.

Код: Выделить всё

(** Close files -- paradox: open (old) file and call Close method. Intended for systems in a host environment to explicitely release a file handle. *)
проц CloseFiles*(context : Commands.Context); (** [Options] {file} ~ *)
перем
	filelist : СписокИмёнФайлов;
	nofFiles, n : цел64; ndone : цел32;
	file: Files.File;
нач
	nofFiles := GetFileList(context, filelist);
	ndone := 0;
	нцДля n := 0 до filelist.разм - 1 делай
		file := Files.Old(filelist.э[n]^);
		если file # НУЛЬ то file.Close всё;
		увел(n);
	кц;
кон CloseFiles;
Последний раз редактировалось БудДен 07.08.22 12:42, всего редактировалось 1 раз.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 07.08.22 12:40

Похоже, что дело было в вызове GC посреди перебора файлов - там есть специальная оговорка. В общем, закрытие файлов вроде помогает. Всё-таки A2 - божественная игрушка. Я думал, что только на локализацию проблемы могут уйти дни, потому что нужно будет тупо всё утыкивать трассировкой (и ошибка может от этого уехать в другое место) а внезапно всё решилось за час.

Аватара пользователя
Лис [Вежливый]
Сообщения: 561
Зарегистрирован: 08.10.18 13:32

Re: дневник Яос

Сообщение Лис [Вежливый] » 12.08.22 21:12

Хотел тебе на твоём форуме в личку написать, но не нашел, как.
В общем, вот:
http://plana.mybb.ru/viewtopic.php?id=1249#p8255

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 14.08.22 23:52

Тут есть темы про Эльбрус, их вроде поиском можно найти. Коротко ситуация с Эльбрусом такова, что я под него починил загрузочный iso-образ, и загрузочную флешку. Нашлись добрые люди, которые попробовали запустить на железке. Однако ничего не заработало. Сейчас знания о загрузке несколько расширились, можно ещё раз попробовать (бывают легко решаемые проблемы с видеорежимом).

Но это всё x86/x64. Портировать на собственно Эльбрус - я пока не понимаю, как. Насколько я понял, информации о системе команд было недостаточно, потом ситуация улучшалась, но насколько она улучшилась - я не отследил. В любом случае, я бы начал с порта на MIPS, который можно забесплатно гонять в эмуляторе.

Доступ по ssh к серверам недостаточен, т.к. там нет контроля над железкой. Максимум, что можно тут сделать - это портировать в режиме приложения (сделать кодогенератор под Эльбрус и тогда будет ЯОС для Эльбруса, запускаемый под Linux). В принципе это может быть хорошим первым шагом, но доступ нужен всё-таки к какому-нибудь vnc, т.к. в текстовом режиме с ЯОС почти ничего сделать нельзя. По идее, портирование на новую платформу, на которой уже работает Linux, наверное и нужно делать в два этапа - сначала режим приложения, потом режим ОС. Это позволит разделить разработку бекенда компилятора и разработку слоя совместимости с железом

У меня нет ресурсов этим заниматься - у меня пока в планах только продолжение перевода и дальше развитие управления памятью.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 21.08.22 20:46

Перевёл модуль Heaps/Кучи (только интерфейс, да и то не весь). Индекс кирилличности - 30.62% (а неплохо!)

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 24.08.22 00:38

Немного подправил парсер редактора. Теперь он не падает на объявлении переменных внутри блока.
Однако и не разбирает их должным образом - переменная, определённая внутри блока, показывается красной.

Хотя цель была в другом - научиться замерять потребление CPU отдельными процессами. Сейчас под Linux показывается
какая-то чушь (потребление cpu показывается одинаковым для всех тредов). Треды в юникс-версии сделаны на базе pthreads, и по
идее оно должно работать как-то так:

https://stackoverflow.com/questions/449 ... of-threads

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

Неплохо бы ещё сделать, чтобы работало убийство тредов в unix-версии. В win оно нормально работает, а в линуксе ЯОС падает.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 02.10.22 00:22

Потихоньку продолжаю работу над обычной версией RPI. Я постепенно узнаю (того не желая) всё больше деталей об устройстве ARM и A2/ЯОС в ней, но успеха пока нет. Проблема на данный момент в устройстве виртуальной памяти. Раскладка памяти в RPI и Zynq разная, и похоже, что правильный способ работы - разный, в частности, отличаются значения флагов. Кроме того, реализаци для Zynq - кратно сложнее, чем кооперативная. В сумме, получается, что сложный код, аналогичный работающему для Zynq, у меня в наличии не имеется. Нужно либо упрощать версию Zynq до уровня RPi, либо добывать недостающее. Пока, естественно, пытаюсь пойти первым путём.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 25.10.22 21:47

Продолжаю работу над RPi, всё плохо, но таймер вроде бы запустился. Хотя кто его знает.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 31.10.22 11:15

Дошла до конца инициализация ядра с вытесняющей многозадачностью для RPi 2. Конечно, это мало о чём говорит - надо теперь сделать, чтобы оно действительно работало, т.е. чтобы работали и переключались процессы, далее нужно доделать интерфейс таймеров, функцию Sleep хотя бы и ввод с клавиатуры. Перспективы, наверное, есть, поскольку и трассировка, и отладчик работают достаточно неплохо. Я решил ограничиться только одним ядром и не писать драйвер SD-карты. Также я попытался (не знаю, насколько успешно) отключить все возможные виды кеширования. Для тестов работоспособности компилятора этого должно в какой-то степени хватить.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 04.11.22 02:10

Концепт отображения имён функций в отладчике (одно имя функции отрисовывается, размер показывается неверно).

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 08.11.22 01:20

Подправил выдачу лога, чтобы он выдавал диапазон каждой функции. В принципе, пользуясь Dpi файлами от Богдана и этой информацией, можно пытаться сопоставить любой адрес в ядре и какое-то место в коде. В этом случае от gdb понадобится лишь то, что мы уже сейчас умеем, а интерфейсом отладчика тогда будет второй экземпляр ЯОС, для которого gdb станет сервером. Однако, это всё не совсем то, что нужно. Нам нужен тестовый полигон на ARM, а версия RPi сейчас на грани работоспособности. Поэтому решил попробовать вариант эмуляции Zynq. Собрал эмулятор Zynq, также собрал образ диска, теперь нужно как-то попробовать скормить его QEMU.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 11.11.22 01:52

Сегодня удалось запустить UART в эмуляторе Zybo, но дальше не очень хорошо обстоят дела с SD-картой.
Сначала она не особо-то инициализировалась, а потом упала при попытке инициализировать раздел.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 18.11.22 02:07

Инициализировалась SD-карта, но не без сомнений. Потом загрузчик начинает её читать. С чтением от нуля всё хорошо, но потом нужно прочитать начало второго раздела и почему-то возвращаются все нули. Неясно, что имеется под ними в виду и как это проверять/исправлять.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 27.12.22 13:51

Проект по запуску закрытой версии ЯОС в эмуляторе QEMU для Zynq успешно завершён. ПЛИС часть не эмулируется. Начал работы по сведению во единое целое версии кода, которая запускается в QEMU и которая запускается на железке. Сам по себе код мало отличается, но отличия в конфигурации непонятно как поддерживать. Видимо, всё же будет два разных (но близких по содержанию) командных файла для сборки. Скриптовый язык A2/ЯОС не содержит шаблонизатора, который позволял бы параметризовать генерируемые файлы конфигурации, используемые начальным загрузчиком, поэтому так. Состав модулей в версии под эмулятор тоже сильно урезан, и автозагрузка тоже разная. Т.е., видимо, надо сделать так, чтобы различия между конфигурациями было легко локализовать и менять при внесении изменений параллельно.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 30.12.22 01:22

Сделал один шажок к общей между QEMU и железной Zybo конфигурацией. При этом выяснилось, что механизм
автозамен (такой костыль для реализации одного из видов макросов) не работает. Наверное, я его сломал? А он нужен.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 24.03.23 00:39

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 24.03.23 12:55

Продолжались действия по интеграции Zynq в скрипт перевода, а именно, перенесены в основной код версий Linux64, Win32, Win64 инструменты, нужные на хозяйской (собирающей) ОС. Сделана заготовка скрипта, который будет (если Бог даст) переводить весь нужный код для Zybo на русский язык.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 29.03.23 14:36

Заработала русскоязычная версия ЯОС на Zybo. Это большой этап - теперь ЯОС стала кросс-платформенной операционной системой, у которой исходные тексты, пусть частично, написаны на русском языке. Возможно, что это первая в мире такая операционная система. Советские ОС сначала делались под одну платформу, а потом они стали Unix-подобными и значит, перестали быть русскоязычными. Но это не точно, да и всем насрать.

Тем не менее, теперь ЯОС пришла в самосогласованное состояние. До этого она находилась в раскоряке. Из-за того, что исходники для Zynq были англоязычными и не были включены в общий скрипт перевода исходников по словарям с английского на русский и обратно, было невозможно полноценно поддерживать русскоязычную ветку. Т.е., по сути, не существовало ЯОС на Zybo на русском языке. Теперь она существует. И можно, собственно, либо продолжать перевод любых модулей, включая ядро, либо развивать ОС в таком полупереведённом состоянии, либо забросить этот проект к чёртовой бабушке, почесав своё ЧСВ. Видимо, сейчас я пока ничего не буду делать, пусть отлежится.

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: дневник Яос

Сообщение БудДен » 06.05.23 20:46

Пара шагов в направлении реализации вложенных циклов команд в подвале клиента отладчика.

Ответить