← На главную

Phel 0.36.0: переменные, числа и новый синтаксис

08.05.2026 07:18 · hackernews

Разработчики проекта Phel представили релиз версии 0.36.0, принёсший фундаментальные изменения в работу с переменными и числа. Команда добавила полноценную поддержку первого класса переменных через специальную форму (var sym), что упростило управление мета-данными и динамическим характером значений. В системе появилась жёсткая иерархия числовых типов: теперь существуют отдельные классы Phel\Lang\BigDecimal для плавающей запятой, Phel\Lang\BigInteger для целых чисел произвольной длины и Phel\Lang\Rational для дробей. Литералы с суффиксом M, например 1.5M, автоматически распарсятся как десятичные числа, а операции с ними будут проходить с использованием диспетчеризации в зависимости от типа.

Синтаксис получил новые типы данных: Phel\Lang\Uuid для идентификаторов, Phel\Lang\PhpClass для обёртки PHP-классов и Phel\Lang\Collections\Queue\PersistentQueue, обеспечивающий константное время для операций добавления и удаления элементов. Дробные значения 1/2 теперь корректно преобразуются в объекты Rational, а литералы типа N, превышающие предел PHP, переходят в BigInteger. Исправлен баг, когда символы, заканчивающиеся на апостроф, вроде inc', неправильно решались в пространстве имён. Также изменено поведение деления: результат операции (/ int int) без остатка теперь возвращает объект Rational, а дробное деление — плавающий тип, чтобы избежать неожиданных ошибок целочисленного деления.

В тестовой подсистеме команда phel test --list теперь выводит найденные тесты без их запуска, а опция --slowest=N помогает отсортировать их по времени выполнения. Скорость работы REPL выросла за счёт оптимизации сканирования каталогов и кэширования графа зависимостей, что ускоряет запуск в больших проектах. Устранены регрессии в обработке нулевых знаменателей и формата вывода чисел, где теперь не дублируется суффикс M. Отменены устаревшие алиасы var и set!, их функционал полностью перенесён на соответствующие методы ядра. Обновление также включает улучшенную документацию по новому синтаксису пространств имён с точками.

Читать оригинал →