18 января 2021В парсер встроен веб-сервер, активируется при вызове с опцией -p <номер порта> из командной строки. В режиме веб-сервера запросы обрабатываются методом main класса httpd, который добавлен в онфигурационный auto.p и в котором реализована логика работы веб-сервера. Настройки веб-сервера находятся в хеше
$cfg.
Доступно 3 режима работы веб-сервера. Последовательный, в котором один процесс парсера выполняет запросы последовательно друг за другом (по умолчанию). Параллельный, когда на каждый запрос создается отдельный процесс (не поддерживается в Windows) и многопоточный, когда на каждый запрос создается отдельный поток. Режим задается переменной
$HTTPD:mode.
Доступна
64-х битная версия парсера под Windows.
Метод определения размера изображений
^image::measure[] теперь поддерживает определение размера у файлов в форматах tiff, bmp, webp, а при указании опции
$.video(true) еще и mp4 (mov).
В методе определения размера изображений
^image::measure[] добавились опции загрузки XMP и EXIF,
$.xmp(true) и
$.exif(true). Несовместимое изменение: по умолчанию EXIF теперь не загружается, поскольку это ресурсоемко.
Метод перевода чисел между системами исчисления
^math:convert[] теперь поддерживает произвольную разрядность чисел, возможно задание собственного алфавита, поддерживаются системы исчисления с основанием больше 16.
Методам перевода в base64 и обратно добавлены опции
$.wrap(false) для удаления переносов строк,
$.url-safe(true) для использования модифицированного алфавита (вместо ’+’ и ’/’ используются ’-’ и ’_’).
Добавлен метод
^memory:auto-compact(N) для включения режима автоматической сборки мусора. Параметр, целое число от 0 до 5, определяет частоту автоматической сборки мусора. 0 — автоматическая сборка мусора выключена. 1 — частота сборки минимальна, ... 5 — частота сборки максимальна (расход памяти минимален). Частые сборки мусора замедляют скорость выполнение кода на десятки процентов.
Добавлен метод
^table.rename[column name from;column name to] для переименовывания колонки или нескольких колонок, при вызове
^table.rename[ $.[column name from][column name to] ... ].
С помощью опции
$.http_version[2] можно указать curl протокол подключения к сайту.
Методу копирования файлов
^file:copy[] добавлена опция
$.append(true), позволяющая дописать файл в конец другого файла.
Добавлен метод
^hash.select[key;value](bool-condition)[опции], аналогичный методу
^table.select[] и метод
^hash.reverse[], возвращающий хеш с элементами в обратном порядке.
Вызов
^table.hash[] поддерживается для неименованных таблиц, колонки без названий не игнорируются.
Методу получения даты на начало суток добавлен опциональный параметр
^date::today(N).
^date::today(1) — полночь следующего дня.
Методу получения GUID
^math:uuid[] добавлены опции
$.lower(true) и
$.solid(true) для получения GUID в нижнем регистре и исключения из результата ’-’.
В драйвере mysql реализована возможность последовательного подключения к нескольким серверам (в случае недоступности указанных первыми), для этого надо перечислить их в строке подключения, mysql://user:password@host[:port],host2[:port2],.../database.
В драйвере mysql добавлены опции config_file и config_group для подключения my.cnf, реализована работа CLIENT_MULTI_STATEMENTS.
Как давно сделано для хеша, пробельная строка теперь считается корректным аргументом для табличного параметра, эквивалентным пустой таблице.
При использовании совместно с fcgiwrap требуется задавать меньше переменных окружения.
Для больших файлов многократно ускорена работа
$response:download[ $.file[file.name] ], корректно обрабатываются запросы на выдачу части файла (Range Requests).
Методу
^use[файл] можно указать опцию
$.main(true) для загрузки
auto.p, расположенных в одной директории с файлом и выше.
В конфигурационном методе
@conf[] можно задать
$LOCALS(true), чтобы все переменные по умолчанию были локальными.
^xdoc::create[] поддерживает разбор очень больших файлов (используется режим XML_PARSE_HUGE).
Проведена унификация исключений в SQL, теперь все они показывают запрос, который привел к ошибке.
Улучшена диагностика об ошибках
^curl:load[] и
^file::load[].
Обновлены используемые библиотеки сборки мусора gc (gc-8.0.4 ), регулярных выражений pcre (8.43), xml (libxml2-2.9.9), xslt (1.1.34).
Существенно увеличено покрытие тестами исходного кода парсера.
Разбор приходящих писем (опция -m командной строки) поддерживает работу с библиотекой gmime версии 3.X.
Исправлен ряд ошибок:
В
32-х битном режиме поддерживается корректная работа с файлами размером более 4Gb.
Исправлено зацикливание при рекурсивном наследовании классов при использовании
@autouse[].
Длинные почтовые заголовки теперь разделяются на несколько строк.
В Windows версии методы -f и -d теперь корректно работают с русскими именами файлов в UTF-8.
В Windows версии исправлена ошибка перемещения директорий, заканчивающихся на /.
Присвоение $result последним действием в методе больше не вызывает сбоя определения использование $result.
Вызовы
^return{code} и
^return(expre+ssion) работают корректно.
* Длина сообщение в
$exception.comment не ограничивается 1024 символами.