LINUX.ORG.RU

libunicode 0.8.0

 , , ,


0

2

17 февраля состоялся выпуск 0.8.0 библиотеки для языка C++ (стандарт C++20) libunicode. Проект разрабатывается командой разработчиков эмулятора терминала Contour и распространяется по лицензии Apache 2.0.

Возможности библиотеки:

  • поддержка стандартов Unicode 17.0:
  • API для получения свойств Юникод;
  • SIMD-оптимизация некоторых функций (с использованием std::simd или std::experimental::simd при их наличии);
  • оптимизированное конвертирование UTF8 <-> UTF32;
  • эквивалент функции wcwidth (int unicode::width(char32_t));
  • сегментирование текста по графемам, символам, эмодзи и письменностям;
  • преобразование регистра и сравнение строк;
  • высокоуровневый API сегментирования текста, подходящий для реализации шейпинга текста.
  • покрытие тестами большинства возможностей библиотеки (ширина символа и сегментирование).

В комплект поставки также входит консольная утилита unicode-query для получения подробной информации о строках.

Список изменений:

  • добавлены функции:
char32_t simple_uppercase(char32_t codepoint)
char32_t simple_lowercase(char32_t codepoint)
char32_t simple_titlecase(char32_t codepoint)
char32_t simple_casefold(char32_t codepoint)
case_mapping_result full_uppercase(char32_t codepoint)
case_mapping_result full_lowercase(char32_t codepoint)
case_mapping_result full_titlecase(char32_t codepoint)
case_mapping_result full_casefold(char32_t codepoint)
std::u32string to_uppercase(std::u32string_view text)
std::u32string to_lowercase(std::u32string_view text)
std::u32string to_titlecase(std::u32string_view text)
std::u32string casefold(std::u32string_view text)
std::string to_uppercase(std::string_view text)
std::string to_lowercase(std::string_view text)
std::string to_titlecase(std::string_view text)
std::string casefold(std::string_view text)
int casefold_compare(std::u32string_view a, std::u32string_view b)
int casefold_compare(std::string_view a, std::string_view b)
bool casefold_equals(std::u32string_view a, std::u32string_view b)
bool casefold_equals(std::string_view a, std::string_view b)
bool is_cased(char32_t codepoint)
bool is_case_ignorable(char32_t codepoint)
bool changes_when_uppercased(char32_t codepoint)
bool changes_when_lowercased(char32_t codepoint)
bool changes_when_titlecased(char32_t codepoint)
bool changes_when_casefolded(char32_t codepoint)
  • добавлена поддержка Emscripten;
  • некоторым функциям тестирования добавлен префикс is_.

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

★★★★★

Проверено: CrX ()
Последнее исправление: dataman (всего исправлений: 2)
Ответ на: комментарий от sena

Насчет производительности это миф. Из коробки там ее нет, std тормозит как пистон. Только умные и очень опытные дядьки умеют в производительность. Опять же джава работает также быстро, а иногда и быстрей, и библиотек там больше.

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

Насчет производительности это миф. Из коробки там ее нет, std тормозит как пистон. Только умные и очень опытные дядьки умеют в производительность. Опять же джава работает также быстро, а иногда и быстрей, и библиотек там больше.

Вы наверное не видели как ПиСтон тормозит на примитивных кейсах. В плюсах чтобы такого достичь, нужно очень сильно постараться.

Также обращу внимание, что библиотеки к Питону частенько пишутся на тех же С/С++, чтобы потом говорили что «ПиСтон не тормозит».

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

Интересно, кроме игрунов, кто-то сейчас начинает серьезные проекты на С++?

А на чём писать-то? Go, Rust - молоды ещё, не так много по-настоящему опытных спецов на рынке. Java, С# - только если фокус на бабло, не на качество. Что осталось-то?

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

Конечно на бабло, мы же серьезные люди с серьезными проектами.

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

не так много по-настоящему опытных спецов на рынке

Кстати да, с кем писать-то серьёзные проекты? Должен же быть хотя бы один опытный человек в команде.

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

Ну почему же?

Были даже отечественные проекты.

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

Что может помешать писать «качественно» на C#/Java?

Спроси это у 90% C#/Java девелоперов.

Как по мне - количество желающих «войти в IT», в комбинации манагерами, нанимающими людей после 3-месячных курсов.

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

То что разработчики обладают разным уровнем квалификации - это факт. Было бы глупо спорить. Вот только причем тут языки? Так ведь можно и С++ заклеймить, поскольку некоторая часть программистов на нем - это любители навернуть лапши на си-с-классами.

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

То что разработчики обладают разным уровнем квалификации - это факт. Было бы глупо спорить. Вот только причем тут языки? Так ведь можно и С++ заклеймить, поскольку некоторая часть программистов на нем - это любители навернуть лапши на си-с-классами.

некоторая часть

Вопрос в проценте таких людей.

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

Т.е. когда один никому неизвестный gui фреймворк от церна использует Qt и его webview, это называется «модно»?

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

Опять же, это не делает язык непригодным для написания качественного кода.

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

Так его пишут старые, очень старые и реликтовые пердуны. Уж если они на это пошли, то значит это тенденция.

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

А я заметил, что графику в Qt стало модно делать в QtWebEngine, а это css и прости Господи джаваскрипт.

Просвещайся

drfaust ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.