<!--toc--> |
|
### Версия 1.0.3 |
|
_Выпущена:_ 2013-01-04 |
|
Баги безопасности: |
|
- Исправлена валидация UTF-8, некоторые некорректные последовательности могли приниматься за корректные. |
|
Баги: |
|
- Добавлен отсутствующий header в `cppcms/http_context.h` |
- Исправлена опечатка (ticket 3560932) |
|
### Версия 1.0.2 |
|
_Выпущена:_ 2012-08-14 |
|
Баги: |
|
- Исправлена некорректная генерация HTML при использовании `as_table` |
- Исправлены проблемы сборки с новейшим ICU: 3540278 |
- Исправлены некоторые предупреждения в Boost.Locale |
- Исправлен отсутствующий отчет об ошибке в случае переполнения дискового пространства при загрузке файла: 3542469 |
- Исправлены проблемы сборки для visual studio 11: 3527712,3527702 |
- Исправлена проблема при использовании автоматического определения типов в режиме C++11 для gcc: 3537374 |
- Исправлены баги, делающие stackstream бесполезным |
- Исправлены проблемы сборки на Mac OS X: 3513865 |
- Исправлено обнаружение OpenSSL на Windows: 3515712 |
- Исправлена некорректная конфигурация scgi для nginx в `cppcms_run` |
|
|
### Версия 1.0.1 |
|
_Выпущена:_ 2012-03-14 |
|
Баги: |
|
- Исправлено падение при использовании кэша, разделяемого в памяти между процессами, в случае компиляции CppCMS в Release mode с помощью gcc 4.5 и 4.6. |
- Добавлена поддержка CMake-опции LIBDIR, позволяющей инсталляцию библиотек в lib64 вместо lib, как требуют дистрибутивы, основанные на Rad Had. |
|
|
|
### Версия 1.0.0 |
|
_Выпущена:_ 2012-02-26 |
|
Лицензирование: |
|
- CppCMS теперь доступна в альтернативной Коммерческой лицензии. |
|
См.: <http://commercial.cppcms.com> |
|
Баги: |
|
- Временное решение для проблемы компиляции, не позволяющей сборку CppCMS с помощью MSVC10 в Release mode. |
|
|
### Версия 0.999.1 |
|
_Выпущена:_ 2012-02-17 |
|
|
Исправлены баги безопасности: |
|
- Исправлен баг, при котором вызов `reset_session()` не производил сброса сессии, в случае, если сам контент не изменялся. |
- Исправлен баг, который мог приводить к бесконечному ожиданию, в случае, если данные POST содержали незавершенные составные (multi-part) данные, потенциально приводя к DOS. |
|
|
Критические изменения: |
|
Изменен протокол между клиентами `cppcms_scale` и `cppcms`, |
нельзя использовать старый `cppcms_scale` с новейшими версиями `cppcms` и наоборот. |
|
Протокол теперь использует абсолютный 64-битный time-stamp вместо относительного. |
|
Новые возможности: |
|
- Реализовано множество новых unit-тестов, дающих хорошее тестовое покрытие для фреймворка CppCMS. |
- Добавлена поддержка протокола SCGI для `cppcms_run` при использовании веб-сервера nginx. |
- Добавлено множество примеров: Асинхронный ввод/вывод, Сериализация, Наследование темплейтов. Некоторые примеры обновлены для использования нового API. |
|
|
Исправлены баги: |
|
- Исправлен баг, блокирующий работу опции "Keep-Alive" с протоколом FastCGI. |
- Куки сессии не удаляются по вызову очистки (clear) сессии при использовании хранилища сессий на сервере. |
- Исправлен баг, приводящий к тому, что значение сессии не раскрывало что было обновлено. |
- Исправлен некорректный вызов `view_builder` вместо `unsafe_view_builder` при указании небезопасной опции. |
- Исправлена обработка статуса в соответствии со спецификациями HTTP/CGI для случая некорректного приходящего POST. |
- Исправлен баг, при котором в любых ситуациях сокеты не останавливались корректно. |
- Добавлено улучшенное информирование, когда используется контент некорректного типа при рендеринге представлений (view). |
- Исправлен `cppcms_run` для корректной установки `PATH_INFO` nginx'а в соответствии с опциями, доступными в новейшей версии. |
|
|
|
### Версия 0.999.0 |
|
_Выпущена:_ 2012-01-18 |
|
Изменение политики: |
|
- Заморозка API, этим релизом отмечается, что больше не будут делаться обратно-несовместимые изменения для CppCMS 1.x.x |
|
|
Новые возможности: |
|
|
- Улучшения движка темплейтов: |
|
- Добавлены помощники темплейтов поддерживающие функции |
[`<% using ... %>`](http://art-blog.no-ip.info/wikipp/en/page/cppcms_1x_templates_comm#Views.Helpers) и |
[`<% render ... %>`](http://art-blog.no-ip.info/wikipp/en/page/cppcms_1x_templates_comm#Rendering.other.views) |
позволяющие использовать другие представления (view) напрямую из кода, а не только темплейтами, как это было ранее. |
|
- Добавлен новый синтаксис |
|
<% form block foo %>...<% end %> |
|
как лучшая альтернатива: |
|
<% form begin foo %>...<% form end foo %> |
|
- Улучшены сообщения об ошибках в компиляторе темплейтов так, что выдается более прозрачные ошибки в случае синтаксических ошибок. |
|
- Изменена семантика функции `application::render` так, что она не перегружает приложение, назначенное контенту (если оно вообще было назначено) |
|
- Улучшения `cppcms_scale`: |
|
- Поддержа хранилища сессий в дополнении к хранилищу кэша теперь обеспечивает полную масштабируемость сервисам CppCMS. |
- Теперь используется такой же метод конфигурирования, как и процесса CppCMS - JSON-файл с опциональными параметрами командной строки. |
- `cppcms_scale` теперь может запускаться как Unix-демон и как Windows-сервис. |
|
- URL Mapper по-умолчанию не приводит к исключению, а создает недействительный URL, облегчая начальное программирование. |
|
Событие может быть возвращено установкой в true опции `misk.invalid_url_throws`. |
|
- Добавлена поддержка рекурсивного `shared_mutex` в booster. |
|
- Обеспечивает экспериментальную поддержку STLPort 5.2. |
|
|
|
|
|
### Версия 0.99.11 |
|
_Выпущена:_ 2011-12-23 |
|
Новые возможности: |
|
- Полностью переработанный код загрузки и выгрузки view. Интерфейс view теперь документирован, доступен и прозрачен. |
|
- Обновления документации, теперь у всех public-классов и функций полная справочная документация Doxygen. |
|
- Добавлено несколько примеров и создана страница примеров в справочной документации Doxygen. Теперь есть примеры: |
|
- JSON RPC |
- Чат JSON RPC |
- Пример загрузки файла |
|
- Внутренние улучшения файл-сервера: |
|
- Добавлена поддержка простой перезаписи URL |
- Сокращено копирование памяти при передаче файлов |
|
- Добавлена поддержка загрузки бэкенда динамического хранения сессий плагинами, реализованными несколькими бэкендами хранения сессий в секции `contrib`: |
|
- Berkeley DB |
- Sqlite3 |
- CppDB с серверами MySql и PostgreSQL |
|
- Убрана зависимость от pthreads-win32 в Windows 2000 и XP. |
|
- Улучшена обработка JSON-RPC - сокращено копирование json-объектов. |
|
- Добавлена поддержка пользовательской временной зоны при логировании, закрывающая #3432220, изменена временная зона по-умолчанию в лог-файле на локальную - вместо GMT. |
|
- Добавлена реализация клиента JavaScript JSON-RPC в секции `contrib` |
|
- Улучшения производительности в Кэш-сервере TCP. |
|
Баги: |
|
- Исправлено использование устаревших функций в примерах, закрывающее #3404317 |
- Улучшения орфографии, закрывающие #3206151, спасибо за содействие Augustin'у. |
- Исправлено поведение TLS, такое как уничтожение TLS-указателя, все еще позволяющего уничтожение локальных объектов |
- Исправлена проблема #3441849, опечатка в `cppcms::http::context::complition_type`, теперь это `cppcms::http::context::completion_type`, |
как требует орфография. |
- Исправлена косметическая проблема #3460062 |
- Исправлена некорректная проверка условий при использовании PCRE |
- Исправлен баг #3386163, установка `REMOTE_ADDR` не работала за HTTP Proxy. |
- Синхронизация с Boost.Locale: |
|
- исправлены проблемы сборки с clang |
- исправлена обработка недопустимых символов в `MultiByteToWideChar` API в Windows |
|
### Версия 0.99.10.1 |
|
_Выпущена:_ 2011-10-19 |
|
Это релиз исправлений критических багов, которые нельзя отложить до версии 0.99.11. |
|
Критические баги: |
|
- Исправлен баг, приводящий к бесконечному циклу в счетчике `shared_ptr` на Windows-платформе при использовании многоядерных машин. |
- Исправлен баг, препятствующий созданию файла блокировки в процессе обесценивания (регрессия в 0.99.10) |
- Исправлен баг, препятствующий корректному завершению CppCMS-процесса в prefork-режиме (регрессия в 0.99.10). |
- Исправлен баг, препятствующий корректной работе уведомлений JSON-RPC. |
|
Другие баги: |
|
- Исправлена опечатка (#3404317) |
- Исправлено состояние состязания при доступе к сокету, которая могла происходить в некоторых ситуациях на многоядерных машинах. |
- Исправлен `booster::nowide::fstream` для корректного следования указанным флагам открытия в некоторых случаях. |
|
### Версия 0.99.10 |
|
_Выпущена:_ 2011-09-01 |
|
Новые возможности: |
|
- Новые инструменты, предотвращающие [подделку межсайтовых запросов](http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B4%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0_%D0%BC%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2). |
- Множество улучшений HTTP web-сервера, теперь встроенный HTTP web-сервер полностью полезен не только для отладки, но также для использования на встраиваемых платформах или запуска за прокси: |
- Полная поддержка таймаутов на всех этапах |
- Улучшения файлового сервера: |
- Улучшения безопасности в раздаче файлов - теперь это полезно для встраиваемых платформ. |
- Полная поддержка файловых имен в кодировке unicode (UTF-8) под Windows. |
- Опциональный листинг директорий. |
- Поддержка псевдонимов директорий. |
- Поддержка загрузки XSS-профилей из файла/json-объекта делает конфигурирование XSS-фильтров более простым и легким. |
- Поддержка инсталляции, деинсталляции и запуска CppCMS как сервис Windows. |
- Новый инструмент для генерации ключей HMAC/AES - `cppcms_make_key` |
- Поддержка числового индекса и обратной итерации в операторе foreach, закрывающего заявку #3111909 |
- Добавлено предупреждение об устаревании формата темплейтов `<% var %>`, замененным на `<%= var %>` и оператора `form + widget`, замененному на `form.add(widget)` |
- Добавлена "заплатка" для отправки целых HTTP-заголовков некорректным SCGI-коннекторам, таким как IIS. |
- Синхронизация с новейшим Boost.Locale - в основном исправление багов и улучшение тестов. |
|
|
Баги: |
|
- ошибка в некорректном ответе json::value::is_null(). |
- XSS фильтр - предотвращение случайного сопоставления относительного URI-фильтра с абсолютным. |
|
|
### Версия 0.99.9 |
|
_Выпущена:_ 2011-08-10 |
|
Новые возможности: |
|
- Обеспечена поддержка Clang, CppCMS был протестирован с |
Clang 2.8. |
|
Теперь CppCMS поддерживает 5 семейств компиляторов C++: |
|
- GCC 3.4.x до 4.6.1 |
- Visual Studio 2005 - 2010 |
- Clang 2.8 |
- Intel 11 |
- Sun Studio 5.10 |
|
- Значительные улучшения в XSS-фильтровании из-за изменения кода валидации URI при фильтрации на использование парсера C++ вместо сложных регулярных выражений. |
|
Добавлена поддержка полностью настраиваемой валидации HTML-атрибутов с использованием в XSS-фильтре функций обратного вызова. |
|
- Значительные улучшения производительности во многих частях кода за счет устранения многократных распределений памяти: |
|
- HTTP, SCGI и FastCGI бэкенды backends - улучшено распределение памяти CGI переменных. |
- Получение значений из JSON-объектов с использованием API get(...), |
find(...) теперь происходит с нулевым распределением памяти. |
- Различные фильтры, такие как `escape`, `urlencode` и некоторые другие - теперь работают без каких-либо или малых распределений памяти. |
|
- Улучшения производительности в кешировании, заменой сбалансированного бинарного дерева на хеш-таблицу в индексе первичного ключа кеша. |
|
Критические изменения: |
|
- `json::object` изменился с `std::map<std::string,value>` на `std::map<string_key,value>`. Это должно быть полностью прозрачно почти для всех пользователей. |
|
|
Баги: |
|
- Исправлено падение в http::response при отклонениях в записи HTTP заголовков |
например - из-за некорректных прав доступа у файла. |
- Исправлен баг в `booster::regex`, препятствующий сопоставлению некоторых валидных паттернов, в отличие от соответствующих регулярных выражений. |
- Исправлен баг, который мог препятствовать работе `booster::regex` на 64-битных платформах с прямым порядком байт (big endian - прим. пер.). |
- Добавлена начальная поддержка Python3 для компилятора темплейтов. |
- Добавлена "заплатка" для систем, использующих python3 по-умолчанию. |
|
### Версия 0.99.8 |
|
_Выпущена:_ 2011-07-11 |
|
Новые возможности: |
|
- Boost.Locale обновлен до последней версии и собирается мержится в svn-дерево Boost. |
|
Он включает некоторые критические изменения: |
|
- Переработан интерфейс анализа граничных значений: |
|
Вместо использования `mapping`, `token_iterator` |
и `break_iterator`, новые классы |
предоставляющие ту же функциональность ввели: |
|
`segment_index`, `boundary_point_index` |
и элементы, которые могут быть итерированы |
`segment` и `boundary_point`. |
|
См.: |
<http://cppcms.sourceforge.net/boost_locale/html/boundary_analysys.html> |
|
- Обновился интерфейс сообщений, теперь сообщения |
используют тот же тип символа для ключа, что и |
для выходного сообщения, т.е. |
|
std::wstring wh = translate(L"hello").str(); |
std::string h = translate( "hello").str(); |
|
Вместо |
|
std::wstring wh = translate("hello").str<wchar_t>(); |
std::string h = translate("hello").str<char>(); |
|
|
Это позволяет прозрачно использовать не-US-ASCII ключи. |
|
- Обновлен интерфейс `date_time`, чтобы лучше |
соответствовать Boost.DateTime |
и Boost.Chrono. Операции теперь более типобезопасны. |
|
- Введена поддержка компилятора SunStudio на |
OpenSolaris. |
|
- Новые ночные тесты: Linux Armel и Solaris/SunStudio. |
|
|
Баги: |
|
- Исправлен баг, в котором виртуально отключалось |
gzip-сжатие в CppCMS 0.99.7 |
- Некоторые исправления компиляции и тестирования |
для старых версий Mac OS X/Darwin 8. |
|
Замечание: Darwin 8 не поддерживается из-за |
багов в стандартной библиотеке C, но не должно |
быть проблем с новейшими версиями Mac OS X. |
- Исправления для поддержки ICU 4.8 |
- Исправления для поддержки gcc-4.6 и gcc-4.0 |
- Исправления для поддержки Python 2.3.5 |
|
### Версия 0.99.7 |
|
_Выпущена:_ 2011-03-26 |
|
Баги безопасности: |
|
- Исправлен некорректный парсинг ключей, вызывающий снижение энтропии AES и HMAC ключей |
- Исправлено некорректное определение HMAC ключа, при использовании раздельных ключей для CBC и MAC |
|
|
Новые возможности: |
|
- URL-маппинг - создан как противоположность URL |
диспетчеризации, теперь каждый URL может быть |
легко абстрагирован от физического URL, |
|
Это позволяет создавать иерархии приложений и |
ссылаться друг на друга с помощью именованных URL. |
|
- Система Кеширования: |
|
- Добавлена поддержка зависимых триггеров |
записываемых с помощью класса cppcms::triggers_recorder |
- Добавлена поддержка кеша на уровне темплейтов |
- Добавлен фильтр "tee" для лучшей поддержки |
кеширования фрагментов HTML |
|
- Система Темплейтов |
|
- Обеспечено базовое юнит-тестирование |
- Обеспечен доступ к приложению, отображающему |
представление (renders the view - прим. пер.), |
что дает основу для доступа к многим возможностям, |
таким как сессии, кеш и т.п. |
- Добавлены теги `<% url ... %>`, `<% cache ...%>`, |
`<% trigger ... %>` |
- Улучшены отчеты об ошибках |
- Добавлен стиль отображения `<%= variable | filters%>`, |
чтобы переопределять зарезервированные слова |
и переменные |
|
- Обновлен пример Message Board с использованием url-маппинга |
|
- Возможности Boost.Locale: |
- В Windows, локаль по-умолчанию - UTF-8 |
- Поддержка Гркгорианского календаря для не-ICU бэкендов |
- Поддержка проверки на летнее время в календаре |
- Оптимизация производительности в форматировании |
и сортировке |
|
- Переработан класс booster::socket, разделен на множество |
меньших классов в соответствии с их ролями |
|
- Оптимизация для встраиваемых сборок - добавлена |
поддержка удаления модулей, которые могут быть |
бесполезны для встраиваемых приложений: |
|
- Хранилище кеша, хранилище префорка, распределенное хранилище кеша |
- Сжатие GZip |
|
- Поддержка мягкой остановки fastcgi-процесса в Apache |
на Windows используя стиль ожидания libfastcgi |
|
- Улучшено API boost::thread api для поддержки |
функции-члена отсоединения |
|
- Booster: поддержка timegm, делающая booster::ptime симметричным. |
|
|
Баги: |
|
- Исправлен баг #3177531 - в CGI заголовках возвращался |
неверный порт/ip при использовании "списка" API |
- Очищено свойство set() property, чтобы быть уверенным, |
что оно установлено в false только в случаях, где это |
действительно необходимо и включение его по-умолчанию |
в большинстве виджетов - исправлено F.R. #3177317 |
- Изменен уровень предупреждения на -Wall -Wextra, предупреждения вычищены |
- Boost.Locale - обход бага обнаружения временной зоны ICU |
- Исправлено некорректное отображения форм ввода, когда |
предполагаются указатели |
- Исправлена проблема с устройством urandom при работе |
с ограниченными пользователями под Windows |
- Исправления проблем в MSVC-2005 |
|
|
|
### Версия 0.99.6 |
|
_Выпущена:_ 2011-01-13 |
|
Баги безопасности: |
|
- Исправлен бэкенд AES: неверный [тест избыточности](http://art-blog.no-ip.info/cppcms/blog/post/74) |
- Исправлено переполнение буфера в urlencode для символов |
выше 127. |
|
Баги: |
|
- Исправлено падение при попытке использовать фильтр base64_urlencode. |
|
### Версия 0.99.5 |
|
_Выпущена:_ 2011-01-01 |
|
|
Новые возможности: |
|
- Новый фильтр [XSS](http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B8%D0%BD%D0%B3). Это совсем новая и экспериментальная возможность. Позволяет проверять и фильтровать HTML-ввод, приходящий от ненадежного источника, обеспечивая то, что он не содержит вредоносный код. |
Это очень распространенный случай, когда необходима интеграция в инструменты приложений, такие как TinyMCS. |
|
Он основан на белом списке тегов и значениях HTML-атрибутов, разрешенных для включения. |
|
Фильтр и правила фильтрации можно найти в |
[cppcms::xss](/cppcms_ref_v0_99/namespacecppcms_1_1xss.html) namespace. |
|
Сейчас XSS фильтр используется только в CppCMS's wiki. |
Так что можете попытаться обойти его редактируя [Sandbox](http://art-blog.no-ip.info/wikipp/en/page/sandbox) |
и если удастся - пожалуйста, немедленно сообщите мне. |
|
- Поддержка API Windows Vista/Windows 7. Это позволяет собирать CppCMS на Windows без библиотеки pthreads-win32. |
|
Замечание: необходимо использовать опцию CMake: `-DUSE_WINDOWS6_API=ON`, т.к. по-умолчанию CppCMS нацелена на Windows XP и выше. |
|
- Изменено число рабочих потоков по-умолчанию на число, зависящее от количества физических процессоров |
|
Баги: |
|
- Исправлена некорректная конфигурация мютексов, приводящая к дедлокам в режиме префорка |
- Некоторые исправления в скриптах CMake, в связи с тем, что в некоторых ситуациях библиотеки не находились. |
- Некоторые исправления, чтобы CppCMS работал с uclibc |
- Исправлена проблема в диспетчеризации URL к подприложению, приводящая к невозможности переопределить его главную функцию |
- Некоторые исправления багов в обработке ответа |
|
### Версия 0.99.4 |
|
_Выпущена:_ 2010-11-30 |
|
|
Новые возможности: |
|
- Добавлена поддержка OpenSSL как альтернатива библиотеки Gcrypt для шифрования AES cookies |
- Добавлена поддержка усиливающих опций AES и лучшей выборки хеша для HMAC. |
- Добавлена поддержка записи и показа обратной трассировки стека из исключениий - для лучшей отладочности кода. |
- Добавлена поддержка демонизации - запуска сервисом под Unix, включая опции: переключение на непривилегированного пользователя и `chroot` в указанную директорию. |
- Добавлена поддержка функции reset\_session в session\_interface, что ускоряет распределение нового идентификатора сессии - используемое для предотвращения фиксации сессии. |
- Добавлена поддержка подавления сообщений об ошибках по-умолчанию - информация исключения не показывается пользователю по-умолчанию. |
- Улучшена безопасность генерации идентификаторов сессий. |
- Улучшена производительность генерации случайных чисел под Windows |
- Улучшена обработка заголовка Content-Type |
|
Исправления багов: |
|
- Исправлены случайные сбои вызванные повисшими ссылками. |
- Исправлен баг неправильного использования не-блокирующих сокетов, вызывающий неполную запись при длинном выводе |
- Исправлена утечка памяти в шифровании бэкэнда AES |
- Исправлена некорректная обработка имени скрипта в сервере HTTP. |
- Исправлена некорректная обработка выключения при работе в prefork-режиме, вызывающая блокировку между родителем и потомком при выходе. |
- Исправлен баг в booster::streambuf, вызывающий случайные потери символов - добавлена обработка putback. |
- Исправлена некорректная обработка ошибки в классе http\_response, которая может привести пул потоков к выходу за пределы потоков. |
- Различные исправления тестов, связанные с платформой |
|
|
### Версия 0.99.3 |
|
_Выпущена:_ 2010-09-16 |
|
Баги безопасности: |
|
- Исправление бэкэнда hmac: генерация сигнатуры со слишком малым размером блока |
|
|
Новые возможности: |
|
- Новая версия Boost.Locale |
- Добавлена поддержка нескольких сигнатур hmac-куки: |
|
Встроенные: hmac-md5, hmac-sha1 |
С libgcrypt: hmac-sha224, hmac-sha256, hmac-sha384, hmac-sha512 |
Сейчас по-умолчанию hmac использует sha1 вместо менее безопасного md5 |
|
|
Баги: |
|
- Исправлена утечка памяти в шифраторе сессий aes |
- Исправлена некорректная проверка кодировки UTF-8, которая могла приводить допуску некоторых запрещенных последовательностей. |
- Исправлены отсутствующие атрибуты некоторых виджетов форм |
- Исправлена некорректная генерация кода темплейтов в цикле `foreach` |
- Исправлен race condition в распределении и назначении контекста, которые могли происходить не одновременно |
|
### Версия 0.99.2 |
|
_Выпущена:_ 2010-08-04 |
|
Новые возможности: |
|
- Значительные улучшения производительности в Booster.Aio |
- Значительные улучшения производительности в бэкэнде FastCGI. |
- Добавлено больше примеров |
|
|
Баги: |
|
- Исправлена обработка ответа/статуса в синхронных и асинхронных API. |
- Исправлена некорректная обработка чисел в JSON. |
- Различные исправления, связанные с платформой. |
- Важные исправления багов в обработке загрузки файлов. |
|
|
### Версия 0.99.1 |
|
_Выпущена:_ 2010-06-24 |
|
- Полная переработка ядра CppCMS, которая ввела: |
- Поддержку асинхронного программирования |
- Удаление сторонних библиотек из api ядра. |
- Стабильный API и ABI во всех основных релизах. |
- Улучшена поддержка Ajax с введением JSON-RPC |
- Мощный i18n и l10n |
- "Родная" поддержка Windows, включая поддержку MSVC. |
- И многое другое... |
<!--toc-->
|
|
### Версия 1.0.4
|
|
_Выпущена:_ 2013-06-24
|
|
Критичные баги:
|
|
- Добавлен "Expires" для управления сроком действия куки, поддерживаемого IE.
|
|
До этого релиза куки сессии cppcms использовали опцию max-age, не распознаваемую IE. Начиная с этого релиза, у сессионных кук будут обе опции Expires и Max-Age. Все браузеры, использующие Max-Age, будут игнорировать Expires в случае наличия обеих опций.
|
|
Добавлена новая опция, управляющая свойствами сессионных кук, см. [expiration\_method](/wikipp/en/page/cppcms_1x_config#session.cookies.expiration_method), позволяющая изменять поведение и обрабатывать возможные проблемы рассогласования времени
|
|
### Версия 1.0.3
|
|
_Выпущена:_ 2013-01-04
|
|
Баги безопасности:
|
|
- Исправлена валидация UTF-8, некоторые некорректные последовательности могли приниматься за корректные.
|
|
Баги:
|
|
- Добавлен отсутствующий header в `cppcms/http_context.h`
|
- Исправлена опечатка (ticket 3560932)
|
|
### Версия 1.0.2
|
|
_Выпущена:_ 2012-08-14
|
|
Баги:
|
|
- Исправлена некорректная генерация HTML при использовании `as_table`
|
- Исправлены проблемы сборки с новейшим ICU: 3540278
|
- Исправлены некоторые предупреждения в Boost.Locale
|
- Исправлен отсутствующий отчет об ошибке в случае переполнения дискового пространства при загрузке файла: 3542469
|
- Исправлены проблемы сборки для visual studio 11: 3527712,3527702
|
- Исправлена проблема при использовании автоматического определения типов в режиме C++11 для gcc: 3537374
|
- Исправлены баги, делающие stackstream бесполезным
|
- Исправлены проблемы сборки на Mac OS X: 3513865
|
- Исправлено обнаружение OpenSSL на Windows: 3515712
|
- Исправлена некорректная конфигурация scgi для nginx в `cppcms_run`
|
|
|
### Версия 1.0.1
|
|
_Выпущена:_ 2012-03-14
|
|
Баги:
|
|
- Исправлено падение при использовании кэша, разделяемого в памяти между процессами, в случае компиляции CppCMS в Release mode с помощью gcc 4.5 и 4.6.
|
- Добавлена поддержка CMake-опции LIBDIR, позволяющей инсталляцию библиотек в lib64 вместо lib, как требуют дистрибутивы, основанные на Rad Had.
|
|
|
|
### Версия 1.0.0
|
|
_Выпущена:_ 2012-02-26
|
|
Лицензирование:
|
|
- CppCMS теперь доступна в альтернативной Коммерческой лицензии.
|
|
См.: <http://commercial.cppcms.com>
|
|
Баги:
|
|
- Временное решение для проблемы компиляции, не позволяющей сборку CppCMS с помощью MSVC10 в Release mode.
|
|
|
### Версия 0.999.1
|
|
_Выпущена:_ 2012-02-17
|
|
|
Исправлены баги безопасности:
|
|
- Исправлен баг, при котором вызов `reset_session()` не производил сброса сессии, в случае, если сам контент не изменялся.
|
- Исправлен баг, который мог приводить к бесконечному ожиданию, в случае, если данные POST содержали незавершенные составные (multi-part) данные, потенциально приводя к DOS.
|
|
|
Критические изменения:
|
|
Изменен протокол между клиентами `cppcms_scale` и `cppcms`,
|
нельзя использовать старый `cppcms_scale` с новейшими версиями `cppcms` и наоборот.
|
|
Протокол теперь использует абсолютный 64-битный time-stamp вместо относительного.
|
|
Новые возможности:
|
|
- Реализовано множество новых unit-тестов, дающих хорошее тестовое покрытие для фреймворка CppCMS.
|
- Добавлена поддержка протокола SCGI для `cppcms_run` при использовании веб-сервера nginx.
|
- Добавлено множество примеров: Асинхронный ввод/вывод, Сериализация, Наследование темплейтов. Некоторые примеры обновлены для использования нового API.
|
|
|
Исправлены баги:
|
|
- Исправлен баг, блокирующий работу опции "Keep-Alive" с протоколом FastCGI.
|
- Куки сессии не удаляются по вызову очистки (clear) сессии при использовании хранилища сессий на сервере.
|
- Исправлен баг, приводящий к тому, что значение сессии не раскрывало что было обновлено.
|
- Исправлен некорректный вызов `view_builder` вместо `unsafe_view_builder` при указании небезопасной опции.
|
- Исправлена обработка статуса в соответствии со спецификациями HTTP/CGI для случая некорректного приходящего POST.
|
- Исправлен баг, при котором в любых ситуациях сокеты не останавливались корректно.
|
- Добавлено улучшенное информирование, когда используется контент некорректного типа при рендеринге представлений (view).
|
- Исправлен `cppcms_run` для корректной установки `PATH_INFO` nginx'а в соответствии с опциями, доступными в новейшей версии.
|
|
|
|
### Версия 0.999.0
|
|
_Выпущена:_ 2012-01-18
|
|
Изменение политики:
|
|
- Заморозка API, этим релизом отмечается, что больше не будут делаться обратно-несовместимые изменения для CppCMS 1.x.x
|
|
|
Новые возможности:
|
|
|
- Улучшения движка темплейтов:
|
|
- Добавлены помощники темплейтов поддерживающие функции
|
[`<% using ... %>`](http://art-blog.no-ip.info/wikipp/en/page/cppcms_1x_templates_comm#Views.Helpers) и
|
[`<% render ... %>`](http://art-blog.no-ip.info/wikipp/en/page/cppcms_1x_templates_comm#Rendering.other.views)
|
позволяющие использовать другие представления (view) напрямую из кода, а не только темплейтами, как это было ранее.
|
|
- Добавлен новый синтаксис
|
|
<% form block foo %>...<% end %>
|
|
как лучшая альтернатива:
|
|
<% form begin foo %>...<% form end foo %>
|
|
- Улучшены сообщения об ошибках в компиляторе темплейтов так, что выдается более прозрачные ошибки в случае синтаксических ошибок.
|
|
- Изменена семантика функции `application::render` так, что она не перегружает приложение, назначенное контенту (если оно вообще было назначено)
|
|
- Улучшения `cppcms_scale`:
|
|
- Поддержа хранилища сессий в дополнении к хранилищу кэша теперь обеспечивает полную масштабируемость сервисам CppCMS.
|
- Теперь используется такой же метод конфигурирования, как и процесса CppCMS - JSON-файл с опциональными параметрами командной строки.
|
- `cppcms_scale` теперь может запускаться как Unix-демон и как Windows-сервис.
|
|
- URL Mapper по-умолчанию не приводит к исключению, а создает недействительный URL, облегчая начальное программирование.
|
|
Событие может быть возвращено установкой в true опции `misk.invalid_url_throws`.
|
|
- Добавлена поддержка рекурсивного `shared_mutex` в booster.
|
|
- Обеспечивает экспериментальную поддержку STLPort 5.2.
|
|
|
|
|
|
### Версия 0.99.11
|
|
_Выпущена:_ 2011-12-23
|
|
Новые возможности:
|
|
- Полностью переработанный код загрузки и выгрузки view. Интерфейс view теперь документирован, доступен и прозрачен.
|
|
- Обновления документации, теперь у всех public-классов и функций полная справочная документация Doxygen.
|
|
- Добавлено несколько примеров и создана страница примеров в справочной документации Doxygen. Теперь есть примеры:
|
|
- JSON RPC
|
- Чат JSON RPC
|
- Пример загрузки файла
|
|
- Внутренние улучшения файл-сервера:
|
|
- Добавлена поддержка простой перезаписи URL
|
- Сокращено копирование памяти при передаче файлов
|
|
- Добавлена поддержка загрузки бэкенда динамического хранения сессий плагинами, реализованными несколькими бэкендами хранения сессий в секции `contrib`:
|
|
- Berkeley DB
|
- Sqlite3
|
- CppDB с серверами MySql и PostgreSQL
|
|
- Убрана зависимость от pthreads-win32 в Windows 2000 и XP.
|
|
- Улучшена обработка JSON-RPC - сокращено копирование json-объектов.
|
|
- Добавлена поддержка пользовательской временной зоны при логировании, закрывающая #3432220, изменена временная зона по-умолчанию в лог-файле на локальную - вместо GMT.
|
|
- Добавлена реализация клиента JavaScript JSON-RPC в секции `contrib`
|
|
- Улучшения производительности в Кэш-сервере TCP.
|
|
Баги:
|
|
- Исправлено использование устаревших функций в примерах, закрывающее #3404317
|
- Улучшения орфографии, закрывающие #3206151, спасибо за содействие Augustin'у.
|
- Исправлено поведение TLS, такое как уничтожение TLS-указателя, все еще позволяющего уничтожение локальных объектов
|
- Исправлена проблема #3441849, опечатка в `cppcms::http::context::complition_type`, теперь это `cppcms::http::context::completion_type`,
|
как требует орфография.
|
- Исправлена косметическая проблема #3460062
|
- Исправлена некорректная проверка условий при использовании PCRE
|
- Исправлен баг #3386163, установка `REMOTE_ADDR` не работала за HTTP Proxy.
|
- Синхронизация с Boost.Locale:
|
|
- исправлены проблемы сборки с clang
|
- исправлена обработка недопустимых символов в `MultiByteToWideChar` API в Windows
|
|
### Версия 0.99.10.1
|
|
_Выпущена:_ 2011-10-19
|
|
Это релиз исправлений критических багов, которые нельзя отложить до версии 0.99.11.
|
|
Критические баги:
|
|
- Исправлен баг, приводящий к бесконечному циклу в счетчике `shared_ptr` на Windows-платформе при использовании многоядерных машин.
|
- Исправлен баг, препятствующий созданию файла блокировки в процессе обесценивания (регрессия в 0.99.10)
|
- Исправлен баг, препятствующий корректному завершению CppCMS-процесса в prefork-режиме (регрессия в 0.99.10).
|
- Исправлен баг, препятствующий корректной работе уведомлений JSON-RPC.
|
|
Другие баги:
|
|
- Исправлена опечатка (#3404317)
|
- Исправлено состояние состязания при доступе к сокету, которая могла происходить в некоторых ситуациях на многоядерных машинах.
|
- Исправлен `booster::nowide::fstream` для корректного следования указанным флагам открытия в некоторых случаях.
|
|
### Версия 0.99.10
|
|
_Выпущена:_ 2011-09-01
|
|
Новые возможности:
|
|
- Новые инструменты, предотвращающие [подделку межсайтовых запросов](http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B4%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0_%D0%BC%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2).
|
- Множество улучшений HTTP web-сервера, теперь встроенный HTTP web-сервер полностью полезен не только для отладки, но также для использования на встраиваемых платформах или запуска за прокси:
|
- Полная поддержка таймаутов на всех этапах
|
- Улучшения файлового сервера:
|
- Улучшения безопасности в раздаче файлов - теперь это полезно для встраиваемых платформ.
|
- Полная поддержка файловых имен в кодировке unicode (UTF-8) под Windows.
|
- Опциональный листинг директорий.
|
- Поддержка псевдонимов директорий.
|
- Поддержка загрузки XSS-профилей из файла/json-объекта делает конфигурирование XSS-фильтров более простым и легким.
|
- Поддержка инсталляции, деинсталляции и запуска CppCMS как сервис Windows.
|
- Новый инструмент для генерации ключей HMAC/AES - `cppcms_make_key`
|
- Поддержка числового индекса и обратной итерации в операторе foreach, закрывающего заявку #3111909
|
- Добавлено предупреждение об устаревании формата темплейтов `<% var %>`, замененным на `<%= var %>` и оператора `form + widget`, замененному на `form.add(widget)`
|
- Добавлена "заплатка" для отправки целых HTTP-заголовков некорректным SCGI-коннекторам, таким как IIS.
|
- Синхронизация с новейшим Boost.Locale - в основном исправление багов и улучшение тестов.
|
|
|
Баги:
|
|
- ошибка в некорректном ответе json::value::is_null().
|
- XSS фильтр - предотвращение случайного сопоставления относительного URI-фильтра с абсолютным.
|
|
|
### Версия 0.99.9
|
|
_Выпущена:_ 2011-08-10
|
|
Новые возможности:
|
|
- Обеспечена поддержка Clang, CppCMS был протестирован с
|
Clang 2.8.
|
|
Теперь CppCMS поддерживает 5 семейств компиляторов C++:
|
|
- GCC 3.4.x до 4.6.1
|
- Visual Studio 2005 - 2010
|
- Clang 2.8
|
- Intel 11
|
- Sun Studio 5.10
|
|
- Значительные улучшения в XSS-фильтровании из-за изменения кода валидации URI при фильтрации на использование парсера C++ вместо сложных регулярных выражений.
|
|
Добавлена поддержка полностью настраиваемой валидации HTML-атрибутов с использованием в XSS-фильтре функций обратного вызова.
|
|
- Значительные улучшения производительности во многих частях кода за счет устранения многократных распределений памяти:
|
|
- HTTP, SCGI и FastCGI бэкенды backends - улучшено распределение памяти CGI переменных.
|
- Получение значений из JSON-объектов с использованием API get(...),
|
find(...) теперь происходит с нулевым распределением памяти.
|
- Различные фильтры, такие как `escape`, `urlencode` и некоторые другие - теперь работают без каких-либо или малых распределений памяти.
|
|
- Улучшения производительности в кешировании, заменой сбалансированного бинарного дерева на хеш-таблицу в индексе первичного ключа кеша.
|
|
Критические изменения:
|
|
- `json::object` изменился с `std::map<std::string,value>` на `std::map<string_key,value>`. Это должно быть полностью прозрачно почти для всех пользователей.
|
|
|
Баги:
|
|
- Исправлено падение в http::response при отклонениях в записи HTTP заголовков
|
например - из-за некорректных прав доступа у файла.
|
- Исправлен баг в `booster::regex`, препятствующий сопоставлению некоторых валидных паттернов, в отличие от соответствующих регулярных выражений.
|
- Исправлен баг, который мог препятствовать работе `booster::regex` на 64-битных платформах с прямым порядком байт (big endian - прим. пер.).
|
- Добавлена начальная поддержка Python3 для компилятора темплейтов.
|
- Добавлена "заплатка" для систем, использующих python3 по-умолчанию.
|
|
### Версия 0.99.8
|
|
_Выпущена:_ 2011-07-11
|
|
Новые возможности:
|
|
- Boost.Locale обновлен до последней версии и собирается мержится в svn-дерево Boost.
|
|
Он включает некоторые критические изменения:
|
|
- Переработан интерфейс анализа граничных значений:
|
|
Вместо использования `mapping`, `token_iterator`
|
и `break_iterator`, новые классы
|
предоставляющие ту же функциональность ввели:
|
|
`segment_index`, `boundary_point_index`
|
и элементы, которые могут быть итерированы
|
`segment` и `boundary_point`.
|
|
См.:
|
<http://cppcms.sourceforge.net/boost_locale/html/boundary_analysys.html>
|
|
- Обновился интерфейс сообщений, теперь сообщения
|
используют тот же тип символа для ключа, что и
|
для выходного сообщения, т.е.
|
|
std::wstring wh = translate(L"hello").str();
|
std::string h = translate( "hello").str();
|
|
Вместо
|
|
std::wstring wh = translate("hello").str<wchar_t>();
|
std::string h = translate("hello").str<char>();
|
|
|
Это позволяет прозрачно использовать не-US-ASCII ключи.
|
|
- Обновлен интерфейс `date_time`, чтобы лучше
|
соответствовать Boost.DateTime
|
и Boost.Chrono. Операции теперь более типобезопасны.
|
|
- Введена поддержка компилятора SunStudio на
|
OpenSolaris.
|
|
- Новые ночные тесты: Linux Armel и Solaris/SunStudio.
|
|
|
Баги:
|
|
- Исправлен баг, в котором виртуально отключалось
|
gzip-сжатие в CppCMS 0.99.7
|
- Некоторые исправления компиляции и тестирования
|
для старых версий Mac OS X/Darwin 8.
|
|
Замечание: Darwin 8 не поддерживается из-за
|
багов в стандартной библиотеке C, но не должно
|
быть проблем с новейшими версиями Mac OS X.
|
- Исправления для поддержки ICU 4.8
|
- Исправления для поддержки gcc-4.6 и gcc-4.0
|
- Исправления для поддержки Python 2.3.5
|
|
### Версия 0.99.7
|
|
_Выпущена:_ 2011-03-26
|
|
Баги безопасности:
|
|
- Исправлен некорректный парсинг ключей, вызывающий снижение энтропии AES и HMAC ключей
|
- Исправлено некорректное определение HMAC ключа, при использовании раздельных ключей для CBC и MAC
|
|
|
Новые возможности:
|
|
- URL-маппинг - создан как противоположность URL
|
диспетчеризации, теперь каждый URL может быть
|
легко абстрагирован от физического URL,
|
|
Это позволяет создавать иерархии приложений и
|
ссылаться друг на друга с помощью именованных URL.
|
|
- Система Кеширования:
|
|
- Добавлена поддержка зависимых триггеров
|
записываемых с помощью класса cppcms::triggers_recorder
|
- Добавлена поддержка кеша на уровне темплейтов
|
- Добавлен фильтр "tee" для лучшей поддержки
|
кеширования фрагментов HTML
|
|
- Система Темплейтов
|
|
- Обеспечено базовое юнит-тестирование
|
- Обеспечен доступ к приложению, отображающему
|
представление (renders the view - прим. пер.),
|
что дает основу для доступа к многим возможностям,
|
таким как сессии, кеш и т.п.
|
- Добавлены теги `<% url ... %>`, `<% cache ...%>`,
|
`<% trigger ... %>`
|
- Улучшены отчеты об ошибках
|
- Добавлен стиль отображения `<%= variable | filters%>`,
|
чтобы переопределять зарезервированные слова
|
и переменные
|
|
- Обновлен пример Message Board с использованием url-маппинга
|
|
- Возможности Boost.Locale:
|
- В Windows, локаль по-умолчанию - UTF-8
|
- Поддержка Гркгорианского календаря для не-ICU бэкендов
|
- Поддержка проверки на летнее время в календаре
|
- Оптимизация производительности в форматировании
|
и сортировке
|
|
- Переработан класс booster::socket, разделен на множество
|
меньших классов в соответствии с их ролями
|
|
- Оптимизация для встраиваемых сборок - добавлена
|
поддержка удаления модулей, которые могут быть
|
бесполезны для встраиваемых приложений:
|
|
- Хранилище кеша, хранилище префорка, распределенное хранилище кеша
|
- Сжатие GZip
|
|
- Поддержка мягкой остановки fastcgi-процесса в Apache
|
на Windows используя стиль ожидания libfastcgi
|
|
- Улучшено API boost::thread api для поддержки
|
функции-члена отсоединения
|
|
- Booster: поддержка timegm, делающая booster::ptime симметричным.
|
|
|
Баги:
|
|
- Исправлен баг #3177531 - в CGI заголовках возвращался
|
неверный порт/ip при использовании "списка" API
|
- Очищено свойство set() property, чтобы быть уверенным,
|
что оно установлено в false только в случаях, где это
|
действительно необходимо и включение его по-умолчанию
|
в большинстве виджетов - исправлено F.R. #3177317
|
- Изменен уровень предупреждения на -Wall -Wextra, предупреждения вычищены
|
- Boost.Locale - обход бага обнаружения временной зоны ICU
|
- Исправлено некорректное отображения форм ввода, когда
|
предполагаются указатели
|
- Исправлена проблема с устройством urandom при работе
|
с ограниченными пользователями под Windows
|
- Исправления проблем в MSVC-2005
|
|
|
|
### Версия 0.99.6
|
|
_Выпущена:_ 2011-01-13
|
|
Баги безопасности:
|
|
- Исправлен бэкенд AES: неверный [тест избыточности](http://art-blog.no-ip.info/cppcms/blog/post/74)
|
- Исправлено переполнение буфера в urlencode для символов
|
выше 127.
|
|
Баги:
|
|
- Исправлено падение при попытке использовать фильтр base64_urlencode.
|
|
### Версия 0.99.5
|
|
_Выпущена:_ 2011-01-01
|
|
|
Новые возможности:
|
|
- Новый фильтр [XSS](http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B8%D0%BD%D0%B3). Это совсем новая и экспериментальная возможность. Позволяет проверять и фильтровать HTML-ввод, приходящий от ненадежного источника, обеспечивая то, что он не содержит вредоносный код.
|
Это очень распространенный случай, когда необходима интеграция в инструменты приложений, такие как TinyMCS.
|
|
Он основан на белом списке тегов и значениях HTML-атрибутов, разрешенных для включения.
|
|
Фильтр и правила фильтрации можно найти в
|
[cppcms::xss](/cppcms_ref_v0_99/namespacecppcms_1_1xss.html) namespace.
|
|
Сейчас XSS фильтр используется только в CppCMS's wiki.
|
Так что можете попытаться обойти его редактируя [Sandbox](http://art-blog.no-ip.info/wikipp/en/page/sandbox)
|
и если удастся - пожалуйста, немедленно сообщите мне.
|
|
- Поддержка API Windows Vista/Windows 7. Это позволяет собирать CppCMS на Windows без библиотеки pthreads-win32.
|
|
Замечание: необходимо использовать опцию CMake: `-DUSE_WINDOWS6_API=ON`, т.к. по-умолчанию CppCMS нацелена на Windows XP и выше.
|
|
- Изменено число рабочих потоков по-умолчанию на число, зависящее от количества физических процессоров
|
|
Баги:
|
|
- Исправлена некорректная конфигурация мютексов, приводящая к дедлокам в режиме префорка
|
- Некоторые исправления в скриптах CMake, в связи с тем, что в некоторых ситуациях библиотеки не находились.
|
- Некоторые исправления, чтобы CppCMS работал с uclibc
|
- Исправлена проблема в диспетчеризации URL к подприложению, приводящая к невозможности переопределить его главную функцию
|
- Некоторые исправления багов в обработке ответа
|
|
### Версия 0.99.4
|
|
_Выпущена:_ 2010-11-30
|
|
|
Новые возможности:
|
|
- Добавлена поддержка OpenSSL как альтернатива библиотеки Gcrypt для шифрования AES cookies
|
- Добавлена поддержка усиливающих опций AES и лучшей выборки хеша для HMAC.
|
- Добавлена поддержка записи и показа обратной трассировки стека из исключениий - для лучшей отладочности кода.
|
- Добавлена поддержка демонизации - запуска сервисом под Unix, включая опции: переключение на непривилегированного пользователя и `chroot` в указанную директорию.
|
- Добавлена поддержка функции reset\_session в session\_interface, что ускоряет распределение нового идентификатора сессии - используемое для предотвращения фиксации сессии.
|
- Добавлена поддержка подавления сообщений об ошибках по-умолчанию - информация исключения не показывается пользователю по-умолчанию.
|
- Улучшена безопасность генерации идентификаторов сессий.
|
- Улучшена производительность генерации случайных чисел под Windows
|
- Улучшена обработка заголовка Content-Type
|
|
Исправления багов:
|
|
- Исправлены случайные сбои вызванные повисшими ссылками.
|
- Исправлен баг неправильного использования не-блокирующих сокетов, вызывающий неполную запись при длинном выводе
|
- Исправлена утечка памяти в шифровании бэкэнда AES
|
- Исправлена некорректная обработка имени скрипта в сервере HTTP.
|
- Исправлена некорректная обработка выключения при работе в prefork-режиме, вызывающая блокировку между родителем и потомком при выходе.
|
- Исправлен баг в booster::streambuf, вызывающий случайные потери символов - добавлена обработка putback.
|
- Исправлена некорректная обработка ошибки в классе http\_response, которая может привести пул потоков к выходу за пределы потоков.
|
- Различные исправления тестов, связанные с платформой
|
|
|
### Версия 0.99.3
|
|
_Выпущена:_ 2010-09-16
|
|
Баги безопасности:
|
|
- Исправление бэкэнда hmac: генерация сигнатуры со слишком малым размером блока
|
|
|
Новые возможности:
|
|
- Новая версия Boost.Locale
|
- Добавлена поддержка нескольких сигнатур hmac-куки:
|
|
Встроенные: hmac-md5, hmac-sha1
|
С libgcrypt: hmac-sha224, hmac-sha256, hmac-sha384, hmac-sha512
|
Сейчас по-умолчанию hmac использует sha1 вместо менее безопасного md5
|
|
|
Баги:
|
|
- Исправлена утечка памяти в шифраторе сессий aes
|
- Исправлена некорректная проверка кодировки UTF-8, которая могла приводить допуску некоторых запрещенных последовательностей.
|
- Исправлены отсутствующие атрибуты некоторых виджетов форм
|
- Исправлена некорректная генерация кода темплейтов в цикле `foreach`
|
- Исправлен race condition в распределении и назначении контекста, которые могли происходить не одновременно
|
|
### Версия 0.99.2
|
|
_Выпущена:_ 2010-08-04
|
|
Новые возможности:
|
|
- Значительные улучшения производительности в Booster.Aio
|
- Значительные улучшения производительности в бэкэнде FastCGI.
|
- Добавлено больше примеров
|
|
|
Баги:
|
|
- Исправлена обработка ответа/статуса в синхронных и асинхронных API.
|
- Исправлена некорректная обработка чисел в JSON.
|
- Различные исправления, связанные с платформой.
|
- Важные исправления багов в обработке загрузки файлов.
|
|
|
### Версия 0.99.1
|
|
_Выпущена:_ 2010-06-24
|
|
- Полная переработка ядра CppCMS, которая ввела:
|
- Поддержку асинхронного программирования
|
- Удаление сторонних библиотек из api ядра.
|
- Стабильный API и ABI во всех основных релизах.
|
- Улучшена поддержка Ajax с введением JSON-RPC
|
- Мощный i18n и l10n
|
- "Родная" поддержка Windows, включая поддержку MSVC.
|
- И многое другое...
|
|