LINUX.ORG.RU

Вышел Boost 1.66

 ,


1

8

Boost — кроссплатформенный набор библиотек C++ для разных задач.

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

  • Beast — реализация протоколов HTTP/1 и WebSocket поверх Asio;
  • CallableTraits — интроспекция и модификация callable types, наследник Boost.FunctionTypes;
  • Mp11 — библиотека метапрограммирования на основе C++11.

Из прочих изменений можно отметить:

  • Asio — API изменен в соответствии с Networking TS;
  • Atomic — новые экспериментальные операции fetch_negate, <op>_and_test, bit_test_and_set и другие;
  • Stacktrace — улучшена поддержка MinGW;
  • Thread — новые экспериментальные методы promise: set_value_deferred/set_exception_deferred.

>>> Подробности

anonymous

Проверено: anonymous_incognito ()
Последнее исправление: cetjs2 (всего исправлений: 2)

Весь приличный софт уже перепсывают на Растишке, дуст с крестами ненужен.

anonymous
()
Ответ на: комментарий от dinama

слишком толсто. ну или некрасиво. не удаляйтесь от темы: «Где можно увидеть ваш код, практик вы наш, непревзойденный?»

anonymous
()
Ответ на: комментарий от anonymous

Не боись

дело времени, и на растишке свой дуст заведётся, ещё похлещще крестового.

anonymous
()
Ответ на: комментарий от anonymous

Если _GNUC_, _MSC_VER, __BORLANDC - странные SOME_COMPILERы

Да все компиляторы C++ странные, хотя бы в некоторых версиях. Эти ifdef'ы же не просто так придумывают, и иногда их комментируют.

совсем странные компилеры типа Sun/Oracle, Green Hills или Keil не собирают буст даже и с такими уговорами

Чего им не хватает?

anonymous
()
Ответ на: комментарий от anonymous

Ну кому apt-get, а кому и компилять. В некоторых случаях бывает проще статично слинковать. И да - бинарники становятся тяжелее. Монструозная - куча компонентов, часть из которых вообще в данном проекте не нужна. Возможность обойтись - иногда проще реализовать пару-тройку классов руками, чем тянуть в проект boost ради 4-5 функций. В итоге стараюсь связываться с boost только когда нет иного выбора, особенно с учетом качества документации.

KorWIN
()
Ответ на: комментарий от xaizek

Beast позиционируется как минимальная библиотека для построения более фичастых, хотя и нужды каких-то простых приложений тоже может удовлетворить.

На самом деле эту тупо HTTP-парсер по типу https://github.com/nodejs/http-parser, только реализованный в 100 раз сложнее. А 1.1 ил 1.0 - если к TCP-сокету правильно прикрутишь, то будет полноценный 1.1 :)

annulen ★★★★★
()
Ответ на: комментарий от AlexM

Сейчас используем велосипед поверх libevent, но, может, есть более бо́льные способы (не путать с больны́ми :) ?

В libevent есть готовый HTTP-клиент, а тут ты делаешь его сам

annulen ★★★★★
()
Ответ на: комментарий от kawaii_neko

Феерическое ненужно для любителей колбечной лапши. Нормальные люди давным-давно обернули $favorite_io_event_library в корутины и живут себе синхронно и беззаботно.

А какая выгода от такого обертывания? Тем более в boost asio есть какой-то функционал для сопрограмм.

rumgot ★★★★★
()
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от rumgot

Можно без метафор?

По-простому — синхронный код понятен людям.

kawaii_neko ★★★★
()

Было бы неплохо иметь иерархию контейнеров типа class ArrayList: public List и передавать Collection* вместо убогих template <It> foo(It begin, It end), засоряющих хедеры по причине выпила из языка возможности реализовывать темплейты в cppшниках. Но это же плюсики, шаблончики быстрее виртуальных методов, а каждый такт процессора потенциально на вес золота. Вот и любим Qt за их попытку сделать хотя бы немного java-like.

На счет шаблонов в boost, плохи не сами шаблоны а их использование для конфигурации либы. Шаблоны созданы для хранения и обработки данных пользовательского типа и использовать их как либо еще - извращение. Их реализация полностью игнорирует все наработки теории типизированного лямбда исчисления, что приводит к постоянному сражению с компилятором, попытайся заюзать их да пусть даже для генерации биндингов к скриптовым ЯП, что по идее тоже должно входить в область применения шаблонов.

q0tw4 ★★★★
()
Ответ на: комментарий от q0tw4

Шаблоны созданы для хранения и обработки данных пользовательского типа и использовать их как либо еще - извращение.

Какой стариной повеяло. Как будто сейчас не конец 2017-го, а какой-то 1995-й или даже 1994-й.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Как будто сейчас не конец 2017-го, а какой-то 1995-й или даже 1994-й.

Как будто с тех пор шаблоны переписали по-нормальному. К ним даже типы еще завезли (ну в смысле ограничения типа по интерфейсу и проверку типа при передаче в шаблон), хотя делать это сейчас, оставляя совместимость со стандартном бессмысленно, но хоть облегчило бы войну с компилятором.

q0tw4 ★★★★
()
Последнее исправление: q0tw4 (всего исправлений: 1)
Ответ на: комментарий от q0tw4

Как будто с тех пор шаблоны переписали по-нормальному.

А по-нормальному — это как?

Ну и с тех пор уже был Александреску со своим «Modern C++ Design» и тот же policy based design на шаблонах стал вполне себе обычной практикой. Отказываться от использования опыта, накопленного с шаблонами за последние 20+ лет — какой в этом смысл?

eao197 ★★★★★
()
Ответ на: комментарий от eao197

PHP тоже опыт наплодил до того, как его все-таки сделали языком программирования. И перл 5 тоже. Но это же не значит, что надо продолжать давится кактусом.

q0tw4 ★★★★
()
Ответ на: комментарий от q0tw4

Доказательство по аналогии - это демагогия. Ответ на простой вопрос: «А по-нормальному — это как?» будет?

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Тайпклассы хаскеля, функторы окамла, макросы схемы, наследование и дженерики как в джава/шарпе. Есть много нормальных технологий, решающих проблему кастомизации библиотеки. И я надеюсь, что придет день, когда вопрос о потере производительности в нормальных подходах будет полностью закрыт, но мы в принципе уже давно не считаем каждый такт процессора и оптимизируем вышеперечисленные языки как можем.

q0tw4 ★★★★
()
Ответ на: комментарий от eao197

А что, не ясно, что макросы - более общий вид шаблонов и то, что все, что написано на шаблонах можно переписать в виде наследования классов, даже в контейнере данных можно использовать указатель на Object и динамик-кастить в клиентском коде?

q0tw4 ★★★★
()
Ответ на: комментарий от q0tw4

макросы - более общий вид шаблонов

С фига ли? Если вы не в курсе, то Алекс Степанов, который начал делать STL, пришел к идее обобщенного программирования очень давно, где-то на рубеже 1970-х/1980-х годов. И пытался воплотить свои идеи в жизнь сперва на... тадам! Scheme. Не получилось. Затем пробовал на Ada с тамошними дженериками. Опять не получилось. И только с плюсовыми шаблонами все сошлось.

даже в контейнере данных можно использовать указатель на Object и динамик-кастить в клиентском коде

Да я уже сказал, что вопросов больше не имею.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

И пытался воплотить свои идеи в жизнь сперва на... тадам! Scheme. Не получилось.

Ну за гигиену макросов реально приходится очень дорого платить. Так что неосиляторам советую общелисп. Если соблюдать некоторую осторожность, все будет норм, а выразительные возможности там ничем не ограничены.

q0tw4 ★★★★
()
Ответ на: комментарий от q0tw4

Так что неосиляторам советую общелисп.

Судя по обилию надежного, высокопроизводительного, повсеместно используемого софта на CommonLisp, неасиляторов в мире чуть меньше, чем все. Дельту составляет лишь незначительная толика LOR-овских икспердов по всему.

eao197 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.