Size: a a a

2021 July 25
Блог*
Переслано от Sergei Fomin
Про многопоточность, кажется best practice это просто строить код на каналах: нет общего стейта - нет проблем. Но есть сценарии, когда общий стейт всё-таки нужен, и тут мне не известно никакого решения настолько же системного, как Send/Copy и семантика владения в Rust.

Про raii, один гофер мне сказал, что вместо в go 2.0 обещают дженерики с With<T>(func() error), это должно смягчить проблему, но зато появляется лапша из коллбеков) Плюс при работе с объектом мне всё равно надо самому напрягаться и смотреть, надо ли с ним использовать этот With или нет. В теории, линтеры могли бы ловить проблемы типа отсутствия defer obj.Close(), но сейчас они этого не делают и вроде даже понятно, почему: сложно сформулировать какое-то правило, которое бы не страдало от высокого рейта false positive/false negative. Но вообще, на мой вкус, это перекладывание ответственности на линтер не есть хорошо - лучше пусть будет деструктор на уровне языка)

Про захват переменных, линтер иногда что-то такое отлавливает, иногда нет, по-разному бывает)

Про nullability, кажется, можно любо включить режим паранойи и проверять везде и всё, либо положить болт, либо выбрать какой-то вариант посередине. Если код мой собственный для моего же пользования, я предпочитаю делать вид, что null initialization не бывает, и везде инстанциирую через функции а-ля NewFoo(...). Пару раз меня такое подводило кстати :(
источник
Блог*
Переслано от Sergei Fomin
Из плюсов го, во-первых он очень быстро компилится, во вторых меня довольно радует context, который используется примерно во всех либах и позволяет удобно делать cancellation асинхронных процессов. В Rust кажется ещё нет такого стандартного механизма, но возможно я ошибаюсь
источник
Блог*
Клиент был обслужен по высшему разряду электрического стула
источник
2021 July 26
Блог*
#prog #rust #article

Тем временем Амос опять задорно и интересно пишет. Да, опять про асинхронщину async и футуры в расте.

fasterthanli.me/articles/understanding-rust-futures-by-going-way-too-deep
источник
Блог*
yeah sex is cool but have you ever read Amos?
источник
2021 July 27
Блог*
#prog

Интересно, почему это замедление происходит именно с jump-инструкциями. Неужели с другими не возникает?
источник
Блог*
В последнее время много игрался с ARM архитектурой, и сегодня я наткнулся в x86 микробенчмарке на так называемый Jump Conditional Code Erratum, который при jmp инструкциях, которые попадают на границу кешлинии и могут замедлять горячие циклы по двойной лэтенси того самого кэша, а и в редких случаях его инвалидировать. И компиляторы/линкеры это не детектят из-за нетривиального оверхеда на размер бинаря или просто потому что это очень новая (2019) находка. Но присутствует с процессоров Sandy Bridge.

Помогает выставить -mbranches-within-32B-boundaries в компиляторах, насладиться 1% оверхеда размера бинаря и чтобы такое никогда не возникало в жизни.

Это даже выглядит как какой-то ужастик. Вы пишите код, выравнивание цикла ломается в совершенно другом месте. Ваш код откатывают, потому что "бенчмарки просели", а вы с этим кодом ничего общего не имеете. Вообще.

В ARM такой проблемы быть не может, так как все инструкции по размеру 4 байта, в x86 оно переменное. Надеюсь, ARM возьмёт своё в итоге.
источник
Блог*
источник
2021 July 28
Блог*
источник
Блог*
В Github завезли интересную фичу — теперь, если положить в репозиторий файлик CITATION.cff, то появится кнопка для цитирования этого репозитория в BibTeX
источник
2021 July 29
Блог*
#prog #c #cpp #article

Until you have the evidence, don’t bother with hypothetical notions that someone can write 10 million lines of C without ubiquitious memory-unsafety vulnerabilities – it’s just Flat Earth Theory for software engineers.

alexgaynor.net/2020/may/27/science-on-memory-unsafety-and-security
источник
Блог*
#article

В той статье рассказывалось о том, что высокое число уязвимостей стабильно коррелирует с тем фактом, что программа написана на языке с небезопасным использованием памяти. В этой же  говорится о том, что технические решения насчёт производства ПО, скорее всего, не играют значительной роли на качество производимого продукта (имеющиеся исследования показывают, что их эффект мал и то под вопросом), а весьма сильное значение имеет организация рабочего процесса. И говорится со ссылками на исследования, подтверждающие отдельные положения
источник
2021 July 30
Блог*
источник
Блог*
Официально заявляю, что я завязываю с тем, чтобы приветствовать новых подписчиков. Когда тебе сразу после окончания трёхдневного спам-блока прилетает блок на 6 дней — это отбивает всякую охоту писать лично. Всё, нахер это дело, себе дороже.

И да, @amfier, я знаю абсолютно точно, что это был ты
источник
Блог*
источник
2021 July 31
Блог*
Переслано от Doge Shibu
Средний раст разрабочик be like
источник
2021 August 01
Блог*
В СМЫСЛЕ УЖЕ АВГУСТ
источник
Блог*
Программисты тут?
источник
Блог*
#prog #rust #meme

Всё так
источник
Блог*
источник