Версия 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.
-
Устранена возможность закрытия стандартных потоков вывода.