Страницы

Восток. Подсчёт ссылок и кириллические имена

Сообщения о трансляторе переехали в отдельный блог.

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

Выбор подсчёта ссылок задаётся ключом -memng counter .

В нынешнем состоянии при сборке самого транслятора с подсчётом ссылок его время работы увеличивается в 1.6 раза.

Также, ощутимым нововведением стало сделанная на днях поддержка кириллических идентификаторов. Кириллица пока ограничивается современными алфавитами русского, украинского и белорусского языков. Имена со смешанным набором латиницы и кириллицы запрещены. Поддержка включается ключом -cyrillic .

Забавно, что внедрив транслитерацию при переводе в программу на Си, из-за ошибки я обнаружил, что в Си также есть поддержка идентификаторов с расширенным набором символов. С этим списком можно ознакомиться в приложении D стандарта языка ISO C99 или ISO C11. Поддержка есть в компиляторах tcc, gcc и clang, но во всех по-разному. В CompCert расширенный диапазон букв недоступен, поэтому транслитерация всё-таки пригодилась.