Выпущено обновление транслятора, библиотеки и сборщика 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.
- Устранена возможность закрытия стандартных потоков вывода.
Комментариев нет:
Отправить комментарий