Square
а какая там лицензия?
ой, я не посмотрел, ну думаю что никакая)
🦥Alex Fails
давайте контрибьютить
го, ща в просхх форкну
Anatoly
в мотивации того пропосала было написано что-то типа "ОЙ, мы не смогли это нормально сделать, давайте выкинем это, а юзеры пусть либы тянут"
а сам codecvt остался std::codecvt<char16_t, char, std::mbstate_t> conversion between UTF-16 and UTF-8 (since C++11) std::codecvt<char32_t, char, std::mbstate_t> conversion between UTF-32 and UTF-8 (since C++11)
Square
а какая там лицензия?
This library is under the MIT License.
🦥Alex Fails
збс
🦥Alex Fails
This library is under the MIT License.
форкнул, го пилить, шо ль
🦥Alex Fails
хотя хочется в стиле STL ее зафигачить
🐙 Antony
https://godbolt.org/g/L9fSij
А Clang в этом месте хорош https://godbolt.org/g/8YrkKU Он вытащил r*r отдельно и из таблицы берёт только константу для домножения в случае test_switch_native В случае массива функций он не смог заинлайнить методы А вот GCC не заинлайнил даже в первом случае, да ещё в добавок вместо jmp по смещению нагенерил лесенку if. Ну и вот эту упячку сотворил: .L15: rep ret .L16: rep ret
JBáruch
Я не понял, что это значит 😥
🦥Alex Fails
ох это было бы прекрасно
го мб попробуем пропосал пильнуть. на утф-8 и кастомные схемы коллации
🐙 Antony
го мб попробуем пропосал пильнуть. на утф-8 и кастомные схемы коллации
Не советую. Предложение уже есть + проблем с юникодом много больше, чем можно себе предстваить.
🐙 Antony
Вот это самое запоминающееся http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0244r0.html
Anatoly
Антон, а Boost.Locale он на базе ICU работает?
🦥Alex Fails
мне понравилась история на хабре про то, как в скулайт добавить поддержку юникода (вернее, collation), и чтоб сильно не разжирел он. Там, правда, про Паскаль: https://habrahabr.ru/post/150543/
Anatoly
в Go тоже элегантно сделано: string у них содержит byte, а тип rune представляет unicode символ
Anatoly
ну и обвязка для работы
🦥Alex Fails
как я понял, тут проблема с натягиванием совы на глобус, т.е. UTF-8 на имеющийся интерфейс строк, iostreams, и пр.
🦥Alex Fails
🦥Alex Fails
https://github.com/Zensey/sqlite3_unicode вот глобус в SQLite
Anonymous
надо, Стася, надо
🦥Alex Fails
Anonymous
🦥Alex Fails
В общем, основная проблема - в итераторах. Надо научиться нормально ходить по код-пойнтам
Pavel
Подскажите плиз Запускаю приложение ARM c AddressSanitizer sanitizer_common.cc:120 "((0 && "unable to mmap")) != (0)" (0x0, 0x0) ERROR: Failed to mmap На простом malloc Ни кто не сталкивался?
🦥Alex Fails
хм, мб идея декоратора над тупой строчкой сработает..
Anatoly
Если ввести отдельную концепцию для строк и unicode-a (мой пример с Go) и оставить возможность конвертировать в std::string и std::wstring, то большой работы не потребовалось бы
Anatoly
строка - это набор байт, а последовательность байт представляющая юникод символ - руна
Anatoly
ну и делать сразу utf-8 стандартом де-факто для строк, в этом случае для кодировок вмещающихся в 128 никаких изменений.
🦥Alex Fails
string_utf8_view
Anatoly
длину хранить придется допом
пусть это будет длина в байтах и отдельная функция для длины в рунах
Vladislav
Anatoly
поздравляю. ты только что изобрел pascal string :)
я не об этом, я том что длину хранить не надо
Anatoly
путь будет таже null-terminated строка
Vladislav
а зачем нужна длина в байтах, если оно будет null terminated?
Anatoly
а new_string может хранить все что ему надо
Vladislav
считается просто одной asm командой
Anatoly
Vladislav
а вот в рунах посчитать посложнее будет
Vladislav
чтобы без конвертировки в API пихать
апи которое требует длину строки - хз хз. так себе апи (я не про strn*)
Vladislav
лишний доп параметр. проще и надежнее (error-prone) пересунуть тот же strlen() внутрь апи и не требовать указания
Vladislav
я про сферический апи в вакууме, конечно же )
Anonymous
ребят, го деградировать
Anonymous
вайфу фигни не скажет
Nikolai
ребят, го деградировать
Я уже чувствую как мой мозг понижается в самооценке....
melvin
Anonymous
Фу, умная фраза! Кыш отсюда!
Anonymous
чому в С++ не вошел такой способ инициализации полей структуры из С?: Foo blah = { .a = 2, .b = 's' }; Причем подобное планируют вернуть в С++20
Anonymous
почему вернуть
Anonymous
кажется это было только в качестве расширения какого-то в GCC
Anonymous
расширение != стандарт, вот
Aidar
Это си99
Aidar
В си++ никогда не было си99
Anonymous
интересно, почему
Aidar
Ну там всякие restrict
Aidar
const
🐙 Antony
Я как-то так в итоге и делал. Но нативный свитч оптимизируется лучше
Запилил тикетов: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82404 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82405 https://bugs.llvm.org/show_bug.cgi?id=34801
🐙 Antony
Как починят, должно стать одинаково по производительности.
Anonymous
Ну так С99 существует где-то с 2000 года. После него же были всякие С++11, С++14, С++17 - и почему-то эту плюху так и не впилили. Что повлияло на решение впилить это в С++20?
melvin
аналогично: почему не впилили файлы в стдлибу?
Anonymous
В смысле? А как же структура FILE и всякие там fopen?
Anonymous
а лол. Тому що С++ совместим с С (не полностью, правда), но никак не наоборот
Anonymous
ага
Aidar
сжечь
🦥Alex Fails
с C11 тоже совместим, но не во всех опциональных фичах
Nikita
такая же if-лесенка
🐙 Antony
Студии у меня нет :) Если кто запостит по аналогии багрепорты - будет круто
🐙 Antony
Оу, на godbolt есть MSVC 2017 О_О
🐙 Antony
но аккаунта для постенья багов в Студию у меня всё равно нет :(
Andrei
Это еще вопрос, что быстрее. Ифы или табличка.