OberonCore
https://forum.oberoncore.ru/

#016 Linux: средства преобразования multibyte <-> UCS2
https://forum.oberoncore.ru/viewtopic.php?f=134&t=6492
Страница 2 из 3

Автор:  Иван Денисов [ Понедельник, 02 Март, 2020 20:35 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

Илья Ермаков писал(а):
Чрезмерный размер Strings тоже не особо хорош. Иногда он статически линкуется, например.
Если только иметь там интерфейс, а реализацию хранить отдельно.

Проверил, размер кодового файла из 20Кб получается 70 Кб. Не такая уж большая жертва. Но зато не надо отдельный модуль вообще.

Автор:  Илья Ермаков [ Вторник, 03 Март, 2020 13:05 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

А чего бояться-то так отдельного модуля?

У нас теперь есть MultiOberon для разных платформ. Захотим на ARM с 1024К что-то скомпилировать на ББ, а тут у вас 70 Кб туда, 70 сюда ))

Автор:  Иван Денисов [ Вторник, 03 Март, 2020 13:18 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

Илья Ермаков писал(а):
А чего бояться-то так отдельного модуля?

У нас теперь есть MultiOberon для разных платформ. Захотим на ARM с 1024К что-то скомпилировать на ББ, а тут у вас 70 Кб туда, 70 сюда ))


В Strings есть процедура Upper, значит надо импортировать будет этот новый модуль для реализации этой процедуры. А раз импортировать, то и в слинкованый файл добавлять. Так. Так что для АРМа импорт придется руками удалять? Или вы предлагаете какой-то хитрый механизм расширения функциональности Strings через Hook. Нужна тут такая сложность?
Скажем нужна... Тогда Strings без установленного UnicodeHook будет пребразовывать только ASCII, а с установленным работать как положено над всем CHAR. Но хорошо ли, что будут меняться постусловия процедур? Не думаю...

Скорее для ARM нужен отдельный модуль Stringsacii, который гарантирует работу только над ASCII.

Или сделать отдельным модулем и импортировать Unicode в ядро? Но это проблему размера не решает.

Автор:  Info21 [ Вторник, 03 Март, 2020 13:47 ]
Заголовок сообщения:  Re: Linux: средства преобразования multibyte <-> UCS2

Евгений Темиргалеев писал(а):
Маленький модуль, только преобразователь UTF8. Его можно линковать в пускач и импортировать в Kernel и HostFiles.
Когда-то школьная сборка была сделана точно по этой схеме (там ещё поучаствовал куда-то пропавший И.Горячев) -- отдельный маленький модуль National.

Автор:  Info21 [ Вторник, 03 Март, 2020 13:51 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

Илья Ермаков писал(а):
Чрезмерный размер Strings тоже не особо хорош. Иногда он статически линкуется, например.
Если только иметь там интерфейс, а реализацию хранить отдельно.
Strings -- HostStrings ?

Автор:  Иван Денисов [ Вторник, 03 Март, 2020 13:51 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

Если отказаться от идеи, что Kernel базовый модуль и импортировать в него, как у Фёдора Васильевича сделано в i21 сборке.

По получится следующая иерархия с полным переиспользованием кода.
Код:
Unicode Utf8 Math Strings Console HostConsole Kernel+$ Files HostFiles StdLoader


Все модули до Kernel не используют динамическую память. Надо будет только в Console через процедурные переменные сделать реализацию установки реализаций.

Тогда мы имеем единую точку вывода STDERR через Console и преобразования кросс-платформенные в ядре...

Автор:  Борис Рюмшин [ Вторник, 03 Март, 2020 14:32 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

Иван Денисов писал(а):
Если отказаться от идеи, что Kernel базовый модуль и импортировать в него, как у Фёдора Васильевича сделано в i21 сборке.

Но этого делать не надо. Оставим в Kernel необходимые ему встроенные вещи, остальное продублируем куда надо.

Автор:  adimetrius [ Вторник, 03 Март, 2020 14:43 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

Иван Денисов писал(а):
получится следующая иерархия с полным переиспользованием кода.
Код:
Unicode Utf8 Math Strings Console HostConsole Kernel+$ Files HostFiles StdLoader

Норм чо

А как же HostConsole? Она же через расширение типа, знач там динамическая память. А можно ее после Kernel?

И повторю свою просьбу: можно Utf вместо Utf8?

Автор:  Иван Денисов [ Вторник, 03 Март, 2020 14:51 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

Борис Рюмшин писал(а):
Иван Денисов писал(а):
Если отказаться от идеи, что Kernel базовый модуль и импортировать в него, как у Фёдора Васильевича сделано в i21 сборке.

Но этого делать не надо. Оставим в Kernel необходимые ему встроенные вещи, остальное продублируем куда надо.

Борис, зато интерфейсы будут не тронуты. Отдельный модуль для Unicode, отдельный для Utf, чтобы его потом убрать, если будет реализация ядра и компилятора для CHAR.

Автор:  Иван Денисов [ Вторник, 03 Март, 2020 14:52 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

adimetrius писал(а):
И повторю свою просьбу: можно Utf вместо Utf8?

Думаю, что да. Тут даже Евгений согласился.

Автор:  Иван Денисов [ Вторник, 03 Март, 2020 15:09 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

adimetrius писал(а):
А как же HostConsole? Она же через расширение типа, знач там динамическая память. А можно ее после Kernel?

Надо убрать динамическую память для приложений без ядра.

Автор:  Илья Ермаков [ Вторник, 03 Март, 2020 16:03 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

Для приложений без ядра, но использующих фиксированный набор дин. объектов типа хуков-директорий и т.п., можно сделать мини-реализацию NewArr, на непрерывной области памяти, когда место под новый объект тупо выделяется в хвосте. Ну и из структур данных Kernel оставлен только Kernel.Type, Kernel.Module, Kernel.Object (эти структуры всё равно вкопилируются в каждый модуль и нужны для IS/WITH и др.).

Автор:  Trurl [ Вторник, 03 Март, 2020 17:37 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

adimetrius писал(а):
можно Utf вместо Utf8?

А что будет означать Utf?

Автор:  Борис Рюмшин [ Вторник, 03 Март, 2020 18:41 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

Иван Денисов писал(а):
Борис Рюмшин писал(а):
Иван Денисов писал(а):
Если отказаться от идеи, что Kernel базовый модуль и импортировать в него, как у Фёдора Васильевича сделано в i21 сборке.

Но этого делать не надо. Оставим в Kernel необходимые ему встроенные вещи, остальное продублируем куда надо.

Борис, зато интерфейсы будут не тронуты. Отдельный модуль для Unicode, отдельный для Utf, чтобы его потом убрать, если будет реализация ядра и компилятора для CHAR.

Иван, мне не нужны влинкованными ни Math, ни Strings, ни тем более Console вместе с Unicode и Utf8.

Ещё раз убедительно прошу, сместитесь, со всей этой веселухой, на уровень в сторону отсюда.

Автор:  Борис Рюмшин [ Вторник, 03 Март, 2020 18:42 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

Иван Денисов писал(а):
Надо убрать динамическую память для приложений без ядра.

Илья Ермаков писал(а):
Для приложений без ядра...

А теперь признайтесь, кто из вас хоть раз делал приложения без ядра?

Автор:  Иван Денисов [ Вторник, 03 Март, 2020 19:06 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

Я делал библиотеки без ядра. Но собственно эта тема произросла из желания Евгения избавиться от Kernel в Strings. Цепочкой логических рассуждений на тему "а зачем ему это надо", я пришел к тому, что видимо для приложений без ядра. Ну и в этом есть смысл, конечно. Могут быть и большие приложения без ядра, и не только библиотеки :)

Автор:  Иван Денисов [ Среда, 04 Март, 2020 10:28 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

Борис Рюмшин писал(а):
Иван, мне не нужны влинкованными ни Math, ни Strings, ни тем более Console вместе с Unicode и Utf8.

Ещё раз убедительно прошу, сместитесь, со всей этой веселухой, на уровень в сторону отсюда.

Не весело, к сожалению. Слишком много противоречий.

Автор:  Иван Денисов [ Среда, 04 Март, 2020 11:31 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

Итак по просьбе Евгения мы делаем отдельный модуль Unicode на основе модуля SovierPony. По просьбе Антона переименовываем модуль Utf8 в модуль Utf. Теперь мы можем оставить я вдре библиотечную реализацию. При этом проверим, что она совпадает на всем диапазоне модулю Unicode в Linux и в Windows. В ядре остаётся скрытая конверсия, экспорт которой мы закрываем. В Kernel, HostFiles и HostConsole будут копии кода "знак в знак" реализаций для низкоуровневой отладки, это будет помечено специальным комментарием и контролироваться при изменении одного из модулей. Борис, так вас устроит?

Автор:  Борис Рюмшин [ Среда, 04 Март, 2020 14:49 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

Иван Денисов писал(а):
Итак по просьбе Евгения мы делаем отдельный модуль Unicode на основе модуля SovierPony. По просьбе Антона переименовываем модуль Utf8 в модуль Utf. Теперь мы можем оставить я вдре библиотечную реализацию. При этом проверим, что она совпадает на всем диапазоне модулю Unicode в Linux и в Windows. В ядре остаётся скрытая конверсия, экспорт которой мы закрываем. В Kernel, HostFiles и HostConsole будут копии кода "знак в знак" реализаций для низкоуровневой отладки, это будет помечено специальным комментарием и контролироваться при изменении одного из модулей. Борис, так вас устроит?

Я не знаю, зачем вам переименовывать Utf8 в Utf, но это как хотите.
Но если вы не трогаете Kernel, не ставите его в зависимость от кучи модулей, которые надо линковать, не импортируете его куда попало, то да, меня это устраивает.

Автор:  Иван Денисов [ Среда, 04 Март, 2020 16:00 ]
Заголовок сообщения:  Re: #016 Linux: средства преобразования multibyte <-> UCS2

Борис Рюмшин писал(а):
Иван Денисов писал(а):
Итак по просьбе Евгения мы делаем отдельный модуль Unicode на основе модуля SovierPony. По просьбе Антона переименовываем модуль Utf8 в модуль Utf. Теперь мы можем оставить я вдре библиотечную реализацию. При этом проверим, что она совпадает на всем диапазоне модулю Unicode в Linux и в Windows. В ядре остаётся скрытая конверсия, экспорт которой мы закрываем. В Kernel, HostFiles и HostConsole будут копии кода "знак в знак" реализаций для низкоуровневой отладки, это будет помечено специальным комментарием и контролироваться при изменении одного из модулей. Борис, так вас устроит?

Я не знаю, зачем вам переименовывать Utf8 в Utf, но это как хотите.
Но если вы не трогаете Kernel, не ставите его в зависимость от кучи модулей, которые надо линковать, не импортируете его куда попало, то да, меня это устраивает.

В Kernel получается, что будет процедура для перенаправления вывода сообщений об ошибках, как предложил Евгений. Через установку процедурных переменных, которые будут скрыты. Это изменения ядра не коснется никаких используемых интерфейсов. Изменение ядра такого рода вас устроит?

Страница 2 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/