Вышел Boost 1.36.0

Новые библиотеки

  • Accumulators:
    Cтруктура для дополнительных расчетов, а также сбора статистических аккумуляторов, от Eric Niebler..
  • Exception:
    Библиотека для передачи произвольных данных в объекты исключений, и передачи исключений между потоками, от Emil Dotchevski.
  • Units:
    Zero-overhead dimensional analysis and unit/quantity manipulation and conversion, from Matthias Schabel and Steven Watanabe
  • Unordered:
    Неупорядоченные ассоциативные контейнеры, от Daniel James.

Обновленные библиотеки

  • Asio:
    • Добавлена поддержка последовательных портов.
    • Добавлена поддержка UNIX сокетов
    • Добавлена поддержка raw сокетов и ICMP.
    • Добавлены обертки для POSIX потоко-ориентированных дескрипторов файлов(исключая регулярные файлы).
    • Добавлены обертки для Windows потоко-ориентированных HANDLE'ов, таких как именованные pipes (требует HANDLE'ы которые работают с I/O completion портами).
    • Добавлены обертки для Windows HANDLE'ы произвольного доступа, такие как файлы (требует HANDLE'ы которые работают с I/O completion портами).
    • Добавлены обертки для операций типа reactor (то есть, они сообщают о готовности, но не о выполнении I/O) используется новый тип null_buffers.
    • Добавлен тип итератора для побайтового обхода буфера.
    • Добавлена новые пергруженные new read_until() и async_read_until(), которые принимают указатель на пользовательскую функцию.
    • Добавлено две экспериментальные блокировки очереди (определяются BOOST_ASIO_ENABLE_TWO_LOCK_QUEUE), которые предоставляют масштабируемость io_service на несколько процессоров.
    • Различные исправления, улучшения производительности и более полного охвата поддержки распределения памяти.
  • Assign:
    list_of() (и ее варианты) на данный момент перегружены операторы сравнения. Это позволит вам написать тестовый код, такой как: BOOST_CHECK_EQUAL(my_container,list_of(2)(3)(4)(5));.
  • Foreach:
    Макрос BOOST_FOREACH для упрощения перечисления последовательности елементов, от Eric Niebler.
    • Новый макрос BOOST_REVERSE_FOREACH для перечесления последовательности элементов в обратном направлении.
  • Function:
    • Усовершенствована поддержка allocator, от Emil Dotchevski.
  • Hash:
    Незначительные обновления и исправления, для получения дополнительной информации см. список изменений.
  • Interprocess:
    • Добавлена анонимно разделяемая память для UNIX систем.
    • Исправлена недостающая семантика перемещения в управляемых памятью классах.
    • Добавлены copy_on_write и open_read_only варианты для разделяемой памяти и классов управляющих связанными файлами.
    • shared_ptr перемещение и поддержка псевдонимов.
  • Intrusive:
    • Добавлены linear<> и cache_last<> варианты раздельно связанных списков.
    • Добавлен optimize_multikey<> вариант неупорядоченного контейнера хуков.
    • При выборе в hook опции store_hash используются оптимизированные неупорядоченные контейнеры
    • Реализация изменена чтобы избежать явного использования блоков try-catch и для совместимость, когда отключены исключения
  • Math:
    • Added new non-central Chi-Square, Beta, F and T distributions.
    • Added Exponential Integral and Zeta special functions.
    • Added Rounding, Truncation, and Unit-in-the-last-place functions.
    • Added support for compile time powers of a runtime base.
    • Added a few SSE2 based optimisations for the Lanczos approximations.
  • MPI:
    • Добавлена поддержка не блокирующих операций в Python, от Andreas Klöckner.
    • Добавлена поддержка для технологии графов.
  • Multi-index Containers:
    Незначительные добавления и исправления (Подробнее в release notes).
  • PtrContainer:
    Добавлены итераторы вставки и поддержка еще нескольких контейнеров (Подробнее в информации по обновлению).
  • Spirit:
    Основная кодовая база "Классического" Spirit V1.8.x интегрирована со Spirit V2, "Новое Поколение" (Подробнее в ChangeLog).
  • Thread:
    • Новые функции lock и try_lock для блокирования сразу нескольких мутексов.
    • Поддержка rvalue для move семантики в компиляторах, где она поддерживается.
    • Исправлено несколько ошибок и добавлены пропущенные функции (включая серьезную ошибку с условной переменной win32).
    • Типы scoped_try_lock теперь обратно совместимы с Boost 1.34.0 и более ранними релизами.
    • Поддержка передачи аргументов в функцию потока через добавление дополнительных аргументов в конструктор потока.
    • Для обратной совместимости добавлены перегружаемые функции timed_lock и timed_wait, позволяющие использовать xtime для таймаутов.
  • Wave:
    • Wave 2.0 это новый большой релиз в котором представлены некоторые изменения API, которые не позволяют использовать его с версиями Boost ниже V1.36.0. В основном были изменены API и hook интерфейс.
    • Исправлена пара ошибок, система возвратного тестирования улучшена для тестирования preporcessing hooks интерфейса (подробности в Changelog).
  • Xpressive:
    Регулярные выражения которые могут быть записаны как строки или как шаблоны выражений и могут обращаться к друг другу и к самим себе рекурсивно используя мощь контекстно свободных грамматик, от Eric Niebler.
    • skip() чтобы указывать какие части входной последовательности должны быть пропущены при работе с регулярным выражением
    • regex_replace() принимает объекты форматирования и выражения форматирования в дополнение к строкам формата.
    • Алгоритм regex_replace() базирующийся на интервалах.
    • Исправлено падение при указании семантических действий в просмотрах вперёд(look-ahead), просмотрах назад(look-behind) и независимых подвыражениях.

Протестировано на компиляторах

Основной тест на компиляторах:

  • GCC 4.01 on Mac OS X 10.4.10 with both Intel and Power PC
  • GCC 4.2.3 on Ubuntu Linux 8.08.1
  • HP C/aC++ B3910B A.06.17 on HP-UX 64-bit
  • Visual C++ 9.0 SP1 beta, 8.0 SP1, and 7.1, all on Windows XP SP-2

Дополнительный тест на компиляторах:

  • GCC 4.2.1 on FreeBSD-7
  • GCC 4.1.2 on NetBSD
  • HP aCC on OS: HP-UX B.11.31 U ia64 and HP-UX B.11.31 9000/800 RISC
  • IBM XL C/C++ Enterprise Edition for AIX, V10.1.0.0, on AIX Version 5.3.0.40
  • Intel 9.1, 10.0, and 10.1, on Mac OS X 10.4.1
  • Compaq C++ V7.1-006 for Compaq Tru64 Unix on an OSF1 V5.1 platform.
  • Sun C++ 5.7, 5.8, 5.9 and GCC 3.4.6 on Sun Solaris 5.10.
  • На Linux:
    • GCC 3.4.3, 4.0.1, 4.2.1, 4.3.0.
    • GCC 4.3.0 with C++0x extensions.
    • GCC 3.4.6, 4.1.1, 4.2.1 on 64 bit linux.
    • Intel C++ 8.1, 9.0 and 9.1.
    • QLogic PathScale(TM) Compiler Suite: Version 3.1
    • pgCC 7.2-3 64-bit target on x86-64 Linux
  • На Windows:
    • Intel 10.1, with Visual C++ 9 backend.
    • Lots of tests on Visual C++ 7.1, 8.0, 9.0
    • Visual C++ 7.1 with Apache C++ Standard Library 4.2.x branch.
    • Visual C++ 8.0 with STLport 5.1
    • Visual C++ 8.0 with STLport 5.1 cross-compiling for Windows Mobile 5.0 Pocket PC SDK (ARMV4I).
    • Borland 5.6.4, 5.8.2, 5.9.3
    • 64 bit Intel 10.1, with Visual C++ 9 backend.
    • 64 bit Visual C++ 9.
    • Comeau C++ 4.3.10.1 beta 2, with Visual C++ 9 backend.

Источник: Boost Version 1.36.0
Перевели: ViGOur и Andrew Selivanov
Обсудить...