All streams
Search
Write a publication
Pull to refresh
10
0.1
Send message

Предыдущий комментарий не могу редактировать, поэтому добавлю отдельно более развёрнуто.
В проектах, которые устраивает использование std::towupper и соответственно ISO 30112

Да, спасибо. Как раз где-то год назад пытался изучать LLVM, смотрел их исходники. Удивился, что во многом у меня и у них подходы к работе со строками совпадают. Однако у них там вроде как нет системы конкатенации строк через expression templates.
А вот в Qt (недавно обнаружил) - есть такая система, только они делают через operator %, считай база та же самая, что и у меня, только у меня на этой базе побольше наворочено всякого.

Очевидно всегда, когда в проекте не используется ICU :)

Так там в самой статье уже есть картинка с велосипедами :)

simstr позволяет без проблем использовать кастомные аллокаторы. Вполне реально привязать какие-нибудь свои, быстрые, и все будет ещё быстрее. Собственно, в бенчмарках очень хорошо видна разница между аллокацией в линуксе (~20ns) и Windows (~70ns).
Бенчмарки проводились с использованием дефолтного new.

И выложили её на GitHub только 2 дня назад (судя по коммитам репозиторий был создан 07.08.2025)? В эпоху LLM'ок, которые без проблем могут сгенерировать тысячи строк кода это выглядит, по крайней мере, подозрительно.

Библиотека использовалась для своих внутренних проектов, и собственно раньше не была библиотекой :) Просто файлы копировались в папки разных проектов (каюсь, иногда ленюсь и делаю "как проще"). Потом "проще" вылазит боком - перетаскивать фичи из проекта в проект стало муторно. В какой-то момент решил сделать это отдельной либой, начал выкладывать примерно этой зимой. Пол-года примерно пытался довести код до состояния "не стыдно показать людям". И соответственно, всю историю сосквошил в один коммит - там страшные вещи попадались, зачем людей пугать историей :)
Если так подозрительно - вот мой довольно давний проект, в котором эти строки использовались - https://github.com/orefkov/v8sqlite, как видите, ему больше двух дней. Также можно например увидеть версию примерно 2019 года здесь.
По поводу С++17 - к сожалению, не могу отказаться от концептов.
Стандартный класс std::string - используется только для конвертации между simstr и std::string, std::string_view. И для simple_str через стандартные строки реализованы find_first_of, решил не заморачиваться со своей реализацией.

Для смены регистра символов и сравнения строк без учёта регистра используются встроенные таблицы для первой плоскости юникода (до 0xFFFF). Строки считаются представленными в кодировке UTF-8, UTF-16, UTF-32 соответственно. Однако не делается нормализация строк и не обрабатываются ситуации, когда смена регистра символа приводит к изменению их количества. Если вам нужна строгая работа с юникодом, используйте другие средства, например ICU.
Суммарно таблицы занимают примерно 64Кб.

Ну так всё правильно, лучше быть богатым и здоровым, чем бедным и больным.
Как видим, у авторов статьи не получилось перестать вызывать setenv после инициализации приложения. В этом они обвинили libc, и видимо пошли искать другой дивный язык и библиотеки, которые работают идеально и без ошибок :) Эх, подвёл таки "безопасный Rust", а ведь так надеялись, что нашли серебряную пулю.

Ну почему же не поможет? Если уж такая сильная нужда будет в библиотеке, которая невозбранно в getenv лазит, что никак не отказаться от неё, то для неё можно уж и расстараться и результат в tls скопировать :) Вот если кто-то напрямую будет environ шерстить, тогда уже да...
Поверьте мне, есть масса способов заставить что-то работать так, как тебе нужно. Это я как автор механизма плагинов для Конфигуратора 1С (которых штатно нет) говорю :)

А что, какая то религия запрещает перехватить вызовы этих функций из сторонних библиотек? Или это уже утерянные знания? Под linux это делается элементарным LD_PRELOAD (https://habr.com/ru/articles/479858/). Кривую библиотеку использовать захочешь - не так раскорячишься.
Мне просто странно, что эти разработчики свой гнев не по адресу направили - разработчики libc честно написали, что get/setenv не потокобезопасна, а они теперь плачут, почему в многопотоке у них проблемы.
PS. Ошибся, кому ответ отправлять. Это ответ на коммент выше.

На это опытный программист просто перехватит вызовы get/setenv - (это элементарно делается) и завернёт таки в мьютекс. Судя по минусам, опытных программистов на хабре осталось не много.

Обычный программист старой закалки прочтет доку, пожмет плечами, засунет свои вызовы getenv/setenv под мьютекс, и пойдет дальше. Делов на пять минут. Вместо того, чтобы ныть на весь интернет о плохой libc и выдумывания новых языков, которые сами за него будут это делать. Он воспринимает мир таким, каков он есть. Написано же в доке "не потоко безопасна", значит, безопасным вызовом в многопотоке он должен позаботиться сам. Вопросы тут больше не к libc, а почему они используют в многопотоке библиотеку, которая дёргает не потоко-безопасные функции.

Почему вы решили, что ваш тест замеряет отклик сети? Такой тест может замерять что угодно - пропускную способность кэша, скорость парсера sql сервера и т.д и т.п. При выполнении запросов столько всего происходит, почему решили, что уперлись именно в сетку?

Сталкивался с таким в шейдерах на мобильниках, там float вообще может быть 16 бит. Делал процедурный фон, анимировался параметром через время в float секундах. На компе норм, на мобилках через несколько минут начинало всё дёргаться. Пришлось этот параметр на мобилках зацикливать, крутил от 0 до 30, потом обратно от 30 до 0.

Автора ставит в тупик элементарная формула расчета, которую любой одинэсник посчитает в уме за минуту? Вы кем в ИТ работаете?

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

Никогда не понимал, почему все так носятся с этой фразой. Есть масса примеров, когда повторение одного и того же действия в итоге таки приводит к другому результату и изменениям.

"Тут вообще всё просто так, кроме денег" (c). Скорее всего работающими в компании и получающими равную с основателями зарплату числятся несколько ключевых сотрудников. Остальные (бухгалтерия, уборщицы, водители и т.д.) - не работают в компании, а наёмники на аутсорсе. Ну и не сказано, а участвуют ли работники вместе с основателями в распределении прибыли.

Язык позволяет записать любые данные по любому адресу, это база. Запретите это, и это будет уже не C++. А вы "ошибки", "ошибки"...

Ещё одна из особенностей sqlite - возможность расширения его возможностей через "виртуальные таблицы". В своё время сделал расширение к нему, которое дергая методы из движка 1С 7.7, представляло его дбфки в виде виртуальных таблиц, позволяя использовать движок запросов sqlite для выполнения sql запросов в дбфной 1С. Прямо из языка 1С :) Работало шустрее и гибче, чем штатные механизмы.

Information

Rating
4,186-th
Registered
Activity