дневник Яос

Операционная система, написанная на языке Оберон и проект её перевода на русский язык. Только технические вопросы.
БудДен
Сообщения: 854
Зарегистрирован: 07.10.18 14:01

Re: дневник ч115

Сообщение БудДен » 20.04.20 02:18

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

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

Re: дневник ч115

Сообщение БудДен » 20.04.20 22:42

Вчера меня почти обозвали идиотом в чате телеграма, посвящённом А2, и попросили не флудить. Я послушался, вышел из группы и вообще закрыл нафиг этот дурацкий телеграм. Поэтому сегодняшний день был весьма плодотворным. Во-первых, спортивная злость, во-вторых, не тратится время на этот самый флуд :)
  • теперь флагманской версией в Win является Win32/oberon.exe, а не WinAos/a2.exe - отличие в том, что у нового лидера есть консольное окно, в которое можно выводить Trace-ом. Это меня спасло при отладке KernelLog. Теперь наличие двух отдельных каналов трассировки документировано. Также поправил документацию по сборке (ссылка пока не в мастере). Если вдруг есть добровольцы, прошу проверить правильность инструкций. Однако хостом для кросс-компиляции по прежнему остаётся WinAos/a2.exe (думаю, что это до следующей оказии что-нибудь поменять в системе сборки)
  • решил ещё одну проблему с некорректным юникодом, в случае, когда глоталась строчка после первой же ошибки. Таким образом, уже исправлено 4 проблемы с юникодом. Но это ещё далеко не всё, что нужно сделать в этом направлении, даже по самым скромным запросам. Речи о приучении парсера А2 к русским ключевым словам пока даже близко не идёт. Речь пока идёт просто об установлении полноценной работоспособности юникода, хотя бы в виде УТФ8, везде, где это нужно.
  • переписал код для раскодировки УТФ8 из буферизованного потока, но никакого теста не написал. Вряд ли оно работает. То, что было там раньше, скорее всего тоже не работало (иначе я бы туда и не полез бы, впрочем, тут надо долго выяснять и разбираться)
  • написал прототип класса потока, который
    возвращает байты, но способен при этом считать позицию по буквам УТФ8. Правда, ещё нужно доделать обработку концов строк.
  • немного поменял структуру исходников, чтобы можно было чтение буквы УТФ8 вставить прямо в базовый класс Streams.Reader. Поскольку в A2 используется наследование плюс сложный порядок инициализации, если мы хотим, чтобы чтение юникода было доступно рано по течению инициализации ОС, то нужно сделать это именно там, а не в более позднем файле UTFStrings.Mod, как это было раньше
Однако я должен заниматься не этим, а своей основной работой (надеюсь, моё начальство не читает этот форум, а если читает, то поймёт и простит :) )
Так что придётся сделать некую паузу.

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

Re: дневник ч115

Сообщение БудДен » 21.04.20 22:45

Сегодня я неплохо поработал, позволю немного покопаться с A2. Сначала вставлю чтение УТФ8 прямо в Стреамс.

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

Re: дневник ч115

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

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

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

Re: дневник ч115

Сообщение БудДен » 23.04.20 01:56

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

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

Re: дневник ч115

Сообщение БудДен » 25.04.20 01:56

Сегодня было особо некогда, но немного покопал подсветку синтаксиса. В одной части внедрил новый тип-букву (руну?) воплощённую в виде записи. Но в целом там в основном остаётся CHAR. Классно то, что было решено поддерживать только кириллицу. Бывает нужно составить таблицу каких-то свойств букв (например, является ли данная буква буквой, цифрой, знаком препинания или чем-то ещё). Для целого юникода любая такая таблица является огромной и должна реализовываться либо как функция , либо как хеш-таблица. А если нужна только кириллица, то просто создаётся таблица размером 0x500 с чем-то там или без чего-то там - и всё. Заменить 256 на 1000 с чем-то почти всегда не страшно, а вот таблица размером 2^32 элементов спокойно может вызвать проблемы. Ведь я запихиваю работу с UTF8 в самое начало загрузки, чтобы она была доступна во всех модулях и чтобы тем самым кириллица стала полноправным членом общества в Яос.

Нарабатываю набор библиотечных функций для преобразования строковых типов, их сравнения и проч.

Похоже на то, что идея о поэтапном внедрении юникода и длительном периоде сосуществования CHAR(байт), UCS32 и UTF8 работает. В конечном итоге нужно вытеснить UTF8 и CHAR и оставить их только для ввода-вывода и FFI, но сразу это сделать невозможно, т.к. система потеряет работоспособность. Похоже, что получается делать это маленькими шажками, при этом после каждого шага система остаётся работающей. И даже пока не понадобилось лезть и менять компилятор/язык.

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

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

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

Сообщение БудДен » 25.04.20 17:46


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

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

Сообщение БудДен » 26.04.20 01:07

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

С другое стороны, можно уже попытаться перейти к таким приятностям, как кириллизация самого ЯП АО.

Нужно составить план на ближайшее время. Вот примерно такой:

- посмотреть, можно ли починить кириллицу в формате Oberon (богатый текст)
- починить русские имена файлов, чтобы они работали во всех трёх версиях (сейчас точно не работают в WinAos)
- печать StringJQ в трапах, в KernelLog и в модуле отладочной печати. Причём неясно, что делать с ARRAY OF UNSIGNED32?

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

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

Сообщение БудДен » 26.04.20 14:30

С форматом оберон решаем так - его нужно заменить на формат bbt, к-рый используется в веб-браузере и вроде в который можно даже вставлять картинки. Он изрядно сломан в плане невозможности назначить стиль текста и даже увеличить шрифт, а браузер не запускается и поэтому текст с картинками нельзя поинспектировать, но кириллица в нём поддерживается и это текстовый формат, основанный на ХМЛ.

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

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

Сообщение БудДен » 26.04.20 16:05

Работа со стилями - один сплошной глюк и уже пора в этом разобраться. Я разбирался уже один раз, но толку вышло мало. Завожу отдельную тему:

http://вече.программирование-по-русски. ... ?f=5&t=252

Ответить