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.
Подробности и изменения в документации будут с релизом.
- Parser 3.4.4 RC, moko [M] 27.10.2015 15:16
- Ответ, G_Z [M] 12.11.2015 20:03
- ^hash.sort[key;value]{string-key-maker}[[asc|desc]] — вылезла несовместимость, Sumo [M] 10.11.2015 14:30 / 10.11.2015 14:36
- Ответ, moko [M] 10.11.2015 14:50
- Ответ, moko [M] 10.11.2015 14:36
- Спасибо за проведённую работу!, stur 09.11.2015 10:32
- Обновлнение, Евгений Химич 01.11.2015 23:08
- Класс, Parser стал заметно живее, как проект. (-), andylars 28.10.2015 18:19 / 28.10.2015 18:20
- Ответ, 28.10.2015 18:17
- Unhandled exception 0xC0000005 at 0x1000192A, G_Z [M] 27.10.2015 16:42
- Ответ, moko [M] 27.10.2015 16:56
- Падает на запросе, G_Z [M] 27.10.2015 17:26 / 27.10.2015 17:51
- Ответ, moko [M] 27.10.2015 17:52
- Ответ, G_Z [M] 27.10.2015 17:53
- Ответ, moko [M] 27.10.2015 18:03
- Ответ, G_Z [M] 27.10.2015 18:08
- Ответ, moko [M] 27.10.2015 18:38
- Странно, G_Z [M] 27.10.2015 16:59
- Ура!, G_Z [M] 27.10.2015 15:53
- Ответ, moko [M] 27.10.2015 15:59
- Ответ, G_Z [M] 27.10.2015 16:15
- Ответ, moko [M] 27.10.2015 16:17
- Ответ, G_Z [M] 27.10.2015 16:20