Pull to refresh
64
0
Илья Поздняков @iliazeus

Пользователь

Send message

Так вроде ничего не случилось? Пропозал, насколько я понял, приняли еще летом. cppreference даже говорит, что в новых clang и gcc он уже реализован.

Просто фичу с навешиванием атрибутов на structured bindings трудно продемонстрировать на чем-то другом. Дело в том, что в самом стандарте есть только один атрибут, который имеет смысл так указывать - это как раз [[maybe_unused]]. Но фича нужна, в том числе, для вендорских атрибутов, не только для стандартных.

В пропозале про операции с насыщением про это говорится так:

Instead of free functions, it is conceivable to provide an integer-like class template with the arithmetic operators suitably overloaded. This would, however, make it impossible to adopt this proposal for C, and seems slightly over-engineered for a rather simple facility.

Кстати, если под проверками вы понимаете именно ветвления вроде if или тернарных операторов, то branchless-реализация возможна даже без применения специальных команд процессора. В тексте пропозала (на него есть ссылка в статье) есть ссылка на https://locklessinc.com/articles/sat_arithmetic/, где как раз описана такая реализация.

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

Поэтому да, я думаю, что большинство реализаций стандартной библиотеки C++ на поддерживаемых архитектурах будут использовать соответствующие команды процессора. Как это сейчас есть для какого-нибудь std::popcount, например.

У любой статьи есть своя целевая аудитория. Статья про новые стандарты C++ ожидает, что читатель знаком с современным C++. Как мне кажется, это вполне логичное ожидание. А у такого человека не возникнет вопросов вроде:

Ну что за вредоносная привычка любителей плюсов классы называть структурами.

"Тут возвращается std::pair<CONST std::string, int>" - и что? Что должен понять читатель?

Объясните хотя бы что begin() - это не первое значение, не указатель на первое значение, а итератор, указывающий на первое значение.

В таком случае, это будет суммировано при сведении. На этом этапе, насколько я понимаю, как раз используются большие битности и частоты дискретизации; в "стадартные" 44.1 или 48 кГц звук ресемплится уже в самом конце производства.

Мясо привозят замороженное, да - но оно всё ещё сырое. Приготовить правильным способом в домашних условиях довольно сложно.

А если готовить другим методом - то вкус уже не тот. Но люди готовят, куча рецептов есть в интернете. Да и готовые такие продаются, просто называются обычно "ролл", а не "шаурма".

На том бенчмарке, что там есть - я вполне верю: там код, который просто отвечает "hello" на любой HTTP-запрос.

Более реалистичные замеры были бы интересны, да.

Если правильно вас понял, то сейчас так проще всего сделать с quickjs - его уже довольно давно скомпилировали в WASM.

Или просто делать eval() или vm из ноды, если код доверенный.

Судя по гитхабу, там под капотом SpiderMonkey - JS-движок из Firefox. Буду следить, если вдруг он и Bun (там JavaScriptCore, как в Safari) выживут - будет какая-то конкуренция для монополии V8 среди JS-бэкенда.

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

Плюс этот новый синтаксис даёт определенный детерминизм в том, когда ресурс будет освобождён, и что он будет освобождён вообще. Если надеяться только на сборщик мусора, то такого не получить - сравните вон в C#, к примеру, финализаторы (основаны полностью на GC) и Disposable.dispose().

Аналитика, насколько я понял по ссылке в статье, по траффику. В этом случае, сравнивать с 2gis кажется не совсем корректно, потому что он предзагружает карты заранее, поэтому паттерн использования траффика совсем другой. Посмореть бы аналитику по установкам приложений, например.

А еще интересно, как на долю яндекс карт влияет то, что они используются в яндекс такси - причем безальтернативно для водителей, насколько понимаю.

Если вам интересна эта тема, рекомендую видео из двух частей (раз, два) от канала Technology Connections. Там буквально разбор одной из машин с демонстрацией каждой функции и каждого реле.

Если учесть, что статья из песочницы, а также то, когда именно автор был более всего активен на Хабре, то, возможно, что статья и была написана где-то около 2009 года - просто из песочницы ее выпустили только сейчас. Но я точно не уверен, так ли работает дата публикации.

@MiraclePtr, не помните, случайно, какая дата была у статьи в песочнице?

Очевидно, что результат вызова нашей "горячей" функции WASM кэшируется

Не думаю, что кешируется что-то, кроме скомпилированного кода. Похоже, оптимизатор LLVM просто догадался, что эту функцию можно переписать без цикла.

as const

Допустим, у вас есть массив, который приходит с бекенда

Пример неудачный - as const можно использовать только для compile-time констант, для данных с бекенда он ничем не поможет.

К слову, тут же может пригодиться и infer для получения аргументов и возвращаемого значения:

Тут лучше подойдут стандартные Parameters и ReturnType.

В первых версиях JavaScript не было исключений. Поэтому доступ к несуществующему полю должен был вернуть хоть какое-то значение. null для этой цели не подходил потому, что требовалось, чтобы он вел себя максимально похоже на Java. Поэтому ввели значение-заглушку. undefined тогда даже не было ключевым словом - это было буквально имя переменной, которой договорились ничего не присваивать, чтобы при доступе к ней всегда возвращалось это самое значение-заглушку. В спеке ECMAScript это до сих пор не ключевое слово, а именно глобальная переменная - просто ее сделали доступной только для чтения.

Information

Rating
Does not participate
Location
Казахстан
Registered
Activity