Страницы

понедельник, 17 января 2022 г.

Версия 0.0.8

Выпущено обновление транслятора, библиотеки и сборщика Android приложений. Как и прежде, доступна установка и автоматическое обновление из Snap Store, deb-репозитория и Homebrew. Также доступна Web-песочница.

  • Добавлена поддержка псевдо-модуля SYSTEM, доступной при использовании опции транслятора -allow-system. Так как сейчас в качестве адреса используется только INTEGER, то нормальная работа обеспечена только для 32-битных систем. При трансляции в Java и JavaScript генерируются заглушки.
  • Добавлена генерация справочных деклараций модулей - DEFINITION, в которых перечислены только экспортированные сущности. Доступно по команде транслятора to-modef.
  • Добавлена возможность конвертации единственного файла с выдачей в стандартный вывод. Доступно через указание в качестве цели "-" или пустого параметра "".
  • В генерации выходного кода для отступов табуляция заменена на пробелы. В коде транслятора отступы можно настраивать, но настройка не выведена в интерфейс командной строки.
  • Улучшено:
    • Статический и динамический анализ не инициализированных переменных.
    • Восстановление анализа после синтаксических ошибок в выражениях
    • Читаемость сгенерированного C-кода: убраны лишние O7_MUL() и избыточное экранирование не ASCII символов в строках.
    • Расширен список учтённых ключевых слов в C++ для избежания конфликтов с именами. В основном, список увеличен за счёт стандарта 20-го года.
  • Исправлено:
    • Ложная диагностика перекрытия имени элементом в расширенной записи в случае, если одноимённый элемент объявлен в базовой записи из импортированного модуля, но не экспортирован. Также добавлено переименование одноимённых элементов в расширенных записях при генерации в JavaScript.
    • Генерация в Java и JavaScript в режиме без инициализации переменных при которой отсутствует как дополнительное зануление, так и динамическая диагностика не инициализированных переменных.
    • Генерация в Java вызова LEN() для массивов, чья длина задана составным выражением.
    • Генерация в C открытых массивов с элементами-массивами известной длины, значений множеств увеличенного диапазона, экспортированных указателей на не экспортированные записи, анонимных указателей в режиме генерации с подсчётом ссылок.
    • Падение при разборе ошибочного кода при попытке получить селектор массива от элемента ошибочного типа и при проверке длин некоторых массивов, длины которых заданы составными выражениями.

В библиотеке по умолчанию

  • Добавлены OsRand.Set для считывания случайных данных в множество, Chars0X.CopyCharsFromLoop для копирования символов из закольцованного буфера, log.c для вывода одиночной литеры.
  • В OsExec исправлен вывод при работе из node.js и воплощена работа через QuickJS.
  • Воплощён OsEnv для JavaScript.
  • Для C воплощён эффективный код для ArrayCopy и ArrayFill и немного оптимизированы проверки вычислений с дробями.
  • Для C добавлена возможность компилировать chibicc, исправлена компилируемость кода как С++ и в режиме подсчёта ссылок.
  • Для Java устранён возможный конфликт имён для модуля, названного System.
  • Устранена возможность закрытия стандартных потоков вывода.

Комментариев нет:

Отправить комментарий

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

Тема корректной обработки ошибок в программе является довольно сложным вопросом в программировании. Отчасти от того, что и она сама являет...