parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Parser 3.4.4 RC

moko 27.10.2015 15:16

Выпущен релиз кандидат версии 3.4.4.
Скачать можно здесь: http://www.parser.ru/download/beta/.
Приветствуются багрепорты и активное тестирование.

Перечень изменений:

* Расширен диапазон поддерживаемых дат, поддерживаются даты от 0000-00-00 00:00:00 до 9999-12-31 23:59:59.

* Реализовано редактирование таблиц. Теперь можно изменить значение ячейки и вставить строку ($t.name[value] и ^t.insert{row}).

* При добавлении ряда в таблицу можно задать его в виде хэша ^tbl.append[ $.a[строка] $.b[строка] ].

* В таблице и хэше реализован приоритет поиска метода при вызове метода (^table.count[]), при обращению к полю ($table.count)
методы не возвращаются в принципе. Ранее независимо от способа обращения в таблице был приоритет метода, а в хэше
приоритет поля, что приводило к проблемам например если в хэше был ключ foreach.

* В датах поддерживается формат ISO 8601, можно работать с датами в любой временной зоне (2015-09-08T18:24:52+03:00).

* Добавлена возможность задания временной зоны по умолчанию, например если время сервера отличается от времени сайта, ^date:roll[TZ;MSK-3].

* Расширен c 32 до 64 бит поддерживаемый диапазон чисел в функции ^math:convert[] и при записи числа в шестнадцатеричном виде (0XNN).

* Релизована поддержка IDNA (кириллических доменов), как при загрузке файлов по HTTP, так и в виде отдельных методов кодирования
и декодирования (^строка.idna[] и ^string:idna[закодированная строка]).

* Добавлены методы для работы с DNS: ^inet:name2ip[name; $.ipv[4|6|any] $.table(true) ] для прямого преобразования имени в адрес
и ^inet:ip2name[ip; $.ipv[4|6|any] ] для обратного преобразования.

* Оптимизированы обращения $var.CLASS, $var.CLASS_NAME, они теперь обрабатываются на этапе компиляции.

* Добавлен метод сортировки хэша, ^hash.sort[key;value]{string-key-maker}[[asc|desc]].

* ^hash.delete[] (без параметров) очищает существующий хэш.

* Добавлены $request:headers, $request:method, $request:поле (ранее эту информацию нужно было получать через $env),

* Заголовки в $response:fields переведены в UPPERCASE, можно удалить заголовок, задав ему пустое значение.

* Добавлена поддержка HTTP метода PUT.

* Добавлен метод ^curl:info[], выдающий информацию о последнем запросе.

* При вызове file::load можно явно задать $.response-charset (если сервис выдает некорректную кодировку).

* Теперь ^строка.left(-1) выдает всю строку.

* Поддерживается вызов ^строка.trim[набор], эквивалентный вызову ^строка.trim[both;набор].

* ^string:js-unescape[] теперь возвращает "грязную" строку.

* Добавлен метод ^строка.unescape[[js|url][; $.charset[кодировка] ]]

* При вызове ^json:string можно передать параметр $._default[имя метода], и при сериализации объектов будет вызываться
метод объекта с таким именем.

* При вызове ^json:string можно задать способ выдачи неопределенных значений: в виде пустой строки ($.void[string]) или
как null ($.void[null], по умолчанию).

* Улучшена обработка ошибок ^json:parse, теперь в исключении показывается проблемный фрагмент, для частых
ошибок сделаны отдельные сообщения.

* При вызове ^json:parse можно отключить преобразование целых чисел в числа, оставив их строками $.int(false).

* Добавлен метод ^reflection:def[class;name] для проверки класса на существование.

* Добавлен метод ^reflection:class_by_name[class_name] для получения класса по имени.

* Добавлен метод ^reflection:is[element_name;class_name], расширяющий функциональность оператора is и позволяющий
определить, является ли $element_name кодом.

* ^таблица.count[columns] работает и для неименованных таблиц.

* ^хэш._at[...] может возвращать не только значение, но и ключ, и пару ключ-значение.

* Исключения компиляции кода унифицированы по структуре с исключениями выполнении кода.

* Обновлены библиотеки сборки мусора libgc с версии 7.2d до 7.2f и регулярных выражений pcre с версии 8.33 до 8.37.

* В Windows версии увеличен лимит памяти в libgc и при ошибках больше не выскакивает окно с сообщением.

Исправлен ряд ошибок:

* Исправлена ошибка, приводившая к некорректной обработке чисел, начинавшихся с 0.

* При сериализации в json символы \u2028 and \u2029 (разделитель строки/абзаца) теперь корректно экранируются.

* Исправлена ошибка, иногда приводившая к исключению при перекодировании пустого параметра.

* Исправлена ошибка, приводившая к исключению при передаче пустого хэша в случае ^table::create[$tbl;^hash::create[]].

* Исправлена ошибка, приводившая к неполной смене языковых переменных при установке mysql соединения с параметром ?charset.

* Исправлена ошибка, иногда приводившая к некорректной сериализации объектов типов, указанных в параметрах ^json:string.

* Исправлена ошибка, иногда приводившая к исключению can't set base while appending methods to class при компиляции.

* Исправлена работа с грязными данными в присваивании значения xml-узла ($node.nodeValue[^taint[&]test]).

* Исправлена ошибка, из-за которой @GET[def] всегда возвращал истину.

* Исправлена перекодировка почтовых заголовков в $mail:received.

* Исправлена ошибка, приводившая к core если @GET_DEFAULT[] возвращал код.

* Исправлена ошибка, в определенных случаях приводившая к исключению при выдаче исключения. :)

* Добавлена проверка на пустоту ключей хэш-файла.

* Исправлена ошибка, приводившая к исключению при вызове ^json:string($double).

* Данные в $mail:received теперь считаются "грязными".

* Исправлена ошибка, из-за которой не выдавались исключения при обращении к несуществующим полям класса $mail.

* Исправлена ошибка вычисления временной зоны в $mail:received.date.

* Исправлена ошибка, приводившая к смене имени файла в заголовке Content-Disposition: в новой версии GCC.

* Исправлена ошибка, из-за которой не обрабатывались исключения в ^cache[some](0).

* Исправлена ошибка, из-за которой не находились директории в файловой системе xfs.

* Исправлена ошибка, приводившая к core при сериализации объектов, не имеющих хэш-представления.

* Исправлена ошибка, из-за которой ^string:base64[] возвращал "c3RyaW5n".

* Исправлена ошибка, из-за которой удалялся BOM-код UTF-8 из файлов, загружаемых в другой кодировке.

Полный лог изменений доступен в CVS.
Подробности и изменения в документации будут с релизом.