Страницы

вторник, 25 марта 2025 г.

odcey 0.2

Обновление утилиты odcey — преобразователя насыщенного текстового формата BlackBox Component Builder .odc в плоский UTF-8 текст.

  1. Добавлена опция «-input-windows1251» для возможности указания в качестве входной кодировки Windows-1251(кириллица) вместо Latin-1, что может быть полезно при работе со старыми руссифицированными сборками BlackBox
  2. Добавлена команда «mc» для встраивания в конфигурацию Midnight Commander

среда, 19 марта 2025 г.

Транслятор 0.0.11

Выпущено обновление с поправками и усилением транслятора в версии 0.0.11 и исправлением и расширением библиотеки по умолчанию в версии 0.0.10. Помимо deb-пакета, snap и homebrew доступна также установка через npm версии, работающей через JavaScript.

воскресенье, 8 декабря 2024 г.

Подход для безопасности по памяти в системном ЯВУ

Представлен общий подход[0], позволяющий на основе высокоуровневых средств создать безопасную по памяти программную среду, защищённую от нарушений изнутри её собственными средствами. Основу предложения составляет ограничение псевдомодулей для работы с переменными с возможными нарушениями типизации, сохраняющее общую целостность. Даже обычный интерфейс SYSTEM позволяет применять схожий подход, что уже было проделано[1], но в силу несоответствия воплощения исходной простой задумке, это приводит к ограниченности применения и бо́льшим накладным расходам.


[0] github/vostok-space/безопасно-по-памяти.md
[1] проверяемые адреса при работе с SYSTEM

четверг, 29 февраля 2024 г.

Обработка ошибок

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

Возникающие при работе кода ошибки по своему происхождению можно разделить на:

  1. ошибки ввода и вывода
  2. ошибки самого кода
  3. ошибки исполнителя кода

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

суббота, 24 февраля 2024 г.

Чтение каталога через Java

Добавлен модуль JavaDir, позволяющий читать каталог при генерации кода через Java.

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

среда, 6 декабря 2023 г.

Проверка пересечений ссылочных параметров в Oberon

В языке Oberon можно передавать переменные через ссылочные параметры процедур — параметры-значения[0] и параметры-переменные. Это удобно, потому что позволяет передавать ссылки на данные без обязательного размещения их в динамической памяти. Если же данные всё равно динамические, существует гарантия неутекания значений указателей с возможным побочным доступом к данным уже после вызова процедуры.

Но иногда возникает потребность в проверке того, не являются ли однотипные параметры на самом деле одним и тем же элементом, что может вызвать затруднение, так как в отличии от указателей сравнения параметров-ссылок в Oberon не предусмотрено. А это может быть важно, если как минимум один параметр — переменный(VAR), и его изменение может привести к нежелательному изменению другого параметра.

четверг, 16 ноября 2023 г.

Простейшее воплощение параметрического модуля

Если нужно использовать модули, параметризированные по ряду объявлений (generics, шаблоны), то в оригинальном Oberon, как и в Modula-2, это всегда было достижимо в некотором виде за счёт самой модульности, требуя, впрочем, расширенного понимания, что стоит за IMPORT. В минимальном варианте для этого достаточно простых средств даже без поддержки со стороны основных инструментов. Этот способ не идеален и позволяет сделать не всё, но и совсем плохим его не назовёшь — в нём не используется никаких опасных и сомнительных средств. Конечно, при очень плотном использовании обобщённых типов лучше внести соответствующие изменения в язык, а ещё лучше перепроектировать его с 0[0]. Если шаблоны нужны как вспомогательный механизм, то этот подход может оказаться даже лучше других.

Здесь представлен схематичный пример. Дополнительные детали воплощения для достижения нужных качеств представить несложно.

odcey 0.2

Обновление утилиты odcey — преобразователя насыщенного текстового формата BlackBox Component Builder .odc в плоский UTF-8 текст. До...