The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

26.09.2017 23:47  Google представил открытую библиотеку Abseil для разработчиков на C++

Компания Google представила проект Abseil, в рамках которого открыта коллекция полезного кода для разработчиков на языке C++, расширяющего стандартную библиотеку функций. Исходные тексты распространяются под лицензией Apache 2.0.

В состав библиотеки включены функции общего назначения, используемые в продуктах Google и хорошо протестированные на реально работающих проектах. Одна часть предложенных в Abseil функций заполняет ниши, не определённые в стандарте C++, а другая предоставляет альтернативные реализации штатных возможностей стандартов C++14 и C++17, адаптированные для использования в коде на C++11 (например, типы optional, any и string_view). Google не пытается продвигать Abseil как альтернативу стандартной библиотеке, а лишь желает поделиться с сообществом кодом, который оказался полезен в собственных проектах.

Компоненты библиотеки:

  • base - базовая часть, включающая код для инициализации и первичные примитивы, которые используют только стандартную библиотеку C++, но при этом выступают в качестве зависимостей для других компонентов Abseil;
  • algorithm - библиотека с коллекцией алгоритмов, дополняющая одноимённую стандартную библиотеку C++ и включающая варианты предложенных в ней алгоритмов, оформленных с использованием контейнеров;
  • container - библиотека с дополнительными контейнерами в стиле STL;
  • debugging - отладочная библиотека, добавляющая проверки для выявления утечек;
  • memory - включает совместимую с C++11 реализацию std::make_unique() и других функций, связанных с управлением памятью;
  • meta - включает совместимые с C++11 версии механизмов проверок типов, появившихся в библиотеке type_traits в C++14 и C++17;
  • numeric - предоставляет совместимые с C++11 реализации 128-разрядных целых типов;
  • strings - подборка функций для обработки строк, включая absl::StrCat(), absl::StrJoin() и absl::StrSplit(), а также совместимую с C++11 версию типа std::string_view, появившегося в стандарте C++17
  • synchronization - примитивы для организации параллельно выполняемых потоков, класс absl::Mutex (оптимизированная замена std::mutex) и набор абстракций для синхронизации потоков;
  • time - функции для операций с абсолютными моментами времени (absl::Time), отрезками времени (absl::Duration), форматирования и разбора значений времени. Также предложен absl::Now() , оптимизированный вариант std::chrono::system_clock::now();
  • types - подборка типов, например, совместимый с C++11 вариант absl::optional.

Дополнительно развивается вариант библиотеки для языка Python, включающий систему обработки флагов командной строки и модуль для организации ведения логов.

  1. Главная ссылка к новости (https://opensource.googleblog....)
Лицензия: CC-BY
Тип: Программы
Ключевые слова: cpp, abseil, google
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, Crazy Alex, 00:06, 27/09/2017 [ответить] [смотреть все]
  • –10 +/
    Какая-то совершенно бессмысленная штука Зачем нужна почему не взять сразу норм... весь текст скрыт [показать]
     
     
  • 2.3, skybon, 00:24, 27/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Самое весёлое, что с std::variant<T, E> и std::expected на горизонте исключения больше не нужны для современной обработки ошибок.
     
     
  • 3.4, Аноним, 01:03, 27/09/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Только во влажных мечтах растодетей.
     
  • 3.7, Crazy Alex, 02:44, 27/09/2017 [^] [ответить] [смотреть все]  
  • +2 +/
    Какая милая наивность. expected иногда хорошо подходит, но никоим образом не делает исключения ненужными (не говоря о том, Что оно само на исключениях основано). Во многих случаях оно излишне или прямо мешает, путая основной code path с разного рода реакциями на экзотику.

    Александреску это, разумеется, понимал и явно упоминал, что это просто удобное средство для многих случаев.

    Ну, или вам в C/go, это там любят всё явно на каждый чих проверять.

     
     
  • 4.8, angra, 03:12, 27/09/2017 [^] [ответить] [смотреть все]  
  • +14 +/
    > Ну, или вам в C/go, это там любят всё явно на каждый чих проверять.

    Вот лохи то, не то что реальные пацаны, программы которых просто падают с абсолютно одинаковым unhandled exception по совершенно разным причинам. Ведь пользователь ни в коем случае не должен узнать, что именно пошло не так. А то еще загуглит решение или сам решит проблему. Нет, пользователь программы должен страдать.

     
     
  • 5.18, Анинимим, 10:06, 27/09/2017 [^] [ответить] [смотреть все]  
  • –2 +/
    То ли дело error codes --- пусть пользователь даже не знает, что программа игнорит критическую ошибку, пока не станет слишком поздно
     
     
  • 6.27, Crazy Alex, 11:12, 27/09/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Это как раз с expected решается (не проверишь, а там ошибка - получишь старый добрый exception), но код уж больно замусоренный когда проверка на ошибки перемешана с основной логикой.
     
  • 5.24, Crazy Alex, 11:05, 27/09/2017 [^] [ответить] [смотреть все]  
  • +/
    Во-первых, ты передёргиваешь, и сам это понимаешь. Отложить обработку исключений в конец функции - совсем не то же самое, что один try-catch на всё про всё. Ну а чтобы вообще unhandled exception получить - такое я в плюсах очень редко вижу в отличие от питона того же.

    Во-вторых, часто пользователю и правда абсолютно побоку, что именно пошло не так. Главное - этом должно быть вывалено  достаточно инфы чтобы осмысленно репортить проблему.

    А вот с проверкой на каждой строке код становится весьма неудобно читать - слишком отвлекается внимание от основной логики. Что уменьшению количества ошибок никак не способствует. Плюс это много медленнее, чем исключения (если исключения достаточно редки, конечно).

     
  • 5.28, А, 11:16, 27/09/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Код ошибки: Опаньки что-то пошло не так
    ГуглХроме стайл
    Когда же доктора научатся вместо истории болезни такие коды ошибок использовать?
     
  • 4.10, Vkni, 04:58, 27/09/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    > Во многих случаях оно излишне или прямо мешает, путая основной code path с разного рода реакциями на экзотику.

    Для такого сценария как раз почти подходит variant. Но я сомневаюсь, что в нём сделали bind.

     
  • 3.9, Vkni, 04:52, 27/09/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    std::variant - это довольно дeбильная штука, т.к. если T и E - это один тип, то получается карачун.
     
  • 2.12, Sabakwaka, 05:31, 27/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +8 +/
    >> Какая-то совершенно бессмысленная штука.

    Но у тебя против неё есть волшебная сила — идти мимо.

     
     
  • 3.25, Crazy Alex, 11:07, 27/09/2017 [^] [ответить] [смотреть все]  
  • +/
    А то! У гугла вообще много странного, которое, вероятно, не с пустого места родилось, но либо нормально себя чувствует именно в их экосистеме либо вообще дохнет со времененм по ненужности. Одно GWT вспомнить.
     
  • 1.2, deadfood, 00:19, 27/09/2017 [ответить] [смотреть все]  
  • +1 +/
    Зачем это нужно, когда есть буст?
     
     
  • 2.5, Аноним, 02:31, 27/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +9 +/
    от буста в последние годы разрабы бегут как от дуста ...
     
     
  • 3.17, RaizerHall, 09:56, 27/09/2017 [^] [ответить] [смотреть все]  
  • +4 +/
    Едрить коптить. То его все задрачивали, а теперь оказывается все от него бегут. Что произошло?
     
     
  • 4.20, Аноним, 10:19, 27/09/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    вышли стильно молодежные стандарты? с более понятными доками и прочим?
     
  • 4.23, Аноним, 10:33, 27/09/2017 [^] [ответить] [смотреть все]  
  • +/
    Джун сэкстраполировал свою неосиляторскую шаражку на весь мир ... весь текст скрыт [показать]
     
  • 3.33, Аноним, 14:11, 27/09/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    А мужики-то не знали...
     
  • 2.6, Аноним, 02:36, 27/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –5 +/
    Зачем это нужно, когда есть раст?
     
     
  • 3.15, Аноним, 09:36, 27/09/2017 [^] [ответить] [смотреть все]  
  • +13 +/
    Потому, что не каждый разработчик педе...ст.
     
     
  • 4.39, burjui, 12:24, 28/09/2017 [^] [ответить] [смотреть все]  
  • +/
    пупоразрывающий хохот, сопровождаемый руколомными аплодисментами, Петросян вскочил со своего места в зале и пустился в пляс
     
  • 3.29, Василий Теркин, 11:43, 27/09/2017 [^] [ответить] [смотреть все]  
  • +/
    А что, Rust как язык, уже стандартизировали?
     
  • 2.13, Аноним, 07:56, 27/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Когда-то было скучно и я писал многопоточный процесс-сервер на boost С тех пор ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.16, Аноним, 09:42, 27/09/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Ты просто не умеешь в многопоточность Ни в одном языке против неё не существует... весь текст скрыт [показать]
     
     
  • 4.19, анон, 10:09, 27/09/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    сообщения об ошибках компиляции в плюсах известная слабость. Про это и деды писали, то ли меейрс то ли этот, как его, забыл какого-то пенсионера из собеса для всяких александреску. В советах про эффектив стл вроде пару советов было - как читать ошибки размером со страницу текста. При этом сишечка, что характерно, за все эти десятилетия до такого не дошла. В дом престарелых не собирается.
     
  • 4.31, anonymous, 12:12, 27/09/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    erlang
     
     
  • 5.37, Crazy Alex, 17:42, 27/09/2017 [^] [ответить] [смотреть все]  
  • +/
    О да, там-то сообщения - вершина понятности. Причём, блин, в рантайме.
     
  • 1.14, Аноним, 08:07, 27/09/2017 [ответить] [смотреть все]  
  • –2 +/
    Зачем это нужно, когда есть dlib?
     
  • 1.21, Аноним, 10:26, 27/09/2017 [ответить] [смотреть все]  
  • +1 +/
    ой, а можно тоже самое, только с c 11 и c 03 ... весь текст скрыт [показать]
     
     
  • 2.34, Аноним, 14:13, 27/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Boost ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.38, SPYIIS, 22:34, 27/09/2017 [^] [ответить] [смотреть все]  
  • +/
    Hooyust
     
  • 1.22, yet another anonymous, 10:30, 27/09/2017 [ответить] [смотреть все]  
  • +/
    В google coding standard использование своего метапрограммирования (да и шаблонов) было запрещено. Как они дошли до создания subj?
     
     
  • 2.26, Crazy Alex, 11:10, 27/09/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    И исключений. Тем не менее дошли. А куда деваться - текущие плюсы без всего этого становятся совершенно бессмысленными - это стало слишком важной частью языка.
     
     
  • 3.35, Аноним, 14:45, 27/09/2017 [^] [ответить] [смотреть все]  
  • +/
    Скорее "выработалась методика правильного использования эксепшенов"
     
     
  • 4.36, Crazy Alex, 17:41, 27/09/2017 [^] [ответить] [смотреть все]  
  • +/
    Она сто лет как выработалась - с момента ухода от checked exceptions. Но гугл зависел (и зависит), от старого кода, где эксепшны не живут. Но сейчас ежу ясно, что плюсовая библиотека общего пользования без эксепшнов и прочих удобных и полезных плюшек просто не взлетит. Тем более, если они претендуют на использование современного тсиля плюсов и реализацию фишек новых стандартов.
     
     
  • 5.40, анон, 16:05, 28/09/2017 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    никаких изменений по поводу исключений нет.
    https://google.github.io/styleguide/cppguide.html#Exceptions

    Сомнительная вкусность плюшек исключений всё так же недостаточно заманчива для гуглокодеров.

     
  • 1.30, Аноним, 12:08, 27/09/2017 [ответить] [смотреть все]  
  • +/
    Ничем не учатся ... весь текст скрыт [показать]
     
  • 1.32, dq0s4y71, 12:30, 27/09/2017 [ответить] [смотреть все]  
  • +1 +/
    Очередная реализация strings для С++? Пора уже, а то давненько что-то не было...
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor