Size: a a a

2020 December 01
Блог*
Полезный совет, внимайте
источник
Блог*
Кстати, остался последний месяц 2020. Предлагаю собрать аптечки, патроны и броню, потому что боссфайт уже близко

#записки
источник
Блог*
#prog

А я напоминаю, что в декабре начинается очередной Advent of code. Предлагаю поучаствовать.

Advent of Code is an Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like. People use them as a speed contest, interview prep, company training, university coursework, practice problems, or to challenge each other.

You don't need a computer science background to participate - just a little programming knowledge and some problem solving skills will get you pretty far. Nor do you need a fancy computer; every problem has a solution that completes in at most 15 seconds on ten-year-old hardware.
источник
Блог*
Ты:
— Я смотрю диффы по merge request, и я бы хотел видеть файлы в порядке важности их изменений. Какой файл должен идти первым?

Gitlab:
— Cargo.lock
источник
Блог*
#prog #fuzzing (thanks @oleg_log)

Разновидность фаззера, который генерирует валидные JSON-файлы. Правда, как пишет сам автор, "jdam is still a very new tool so it hasn't uncovered any good bugs yet".
источник
Блог*
JDAM - Structure-aware JSON fuzzing

https://gitlab.com/michenriksen/jdam
источник
2020 December 02
Блог*
> а что произойдет если выстрелить в ногу?
> давай я тебе, а ты мне (два молодых C++ программиста)
источник
2020 December 03
Блог*
источник
Блог*
#prog #article

Статья о io_uring и BPF и о том, что они могут привнести в процесс разработки под linux.
источник
Блог*
Хочу подчеркнуть пару моментов из последнего TWIR:
allow using generic trait methods in const fn

Этот PR добавляет возможность использовать трейты в const fn!

Это часть реализации (ещё не принятого, ммм) RFC #2632, которое предлагает позволить такое:

impl const Add for MyInt {
   fn add(self, other: Self) -> Self {
       MyInt(self.0 + other.0)
   }
}

и такое:

const fn triple_add<T: Add<Output=T>>(a: T, b: T, c: T) -> T {
   a + b + c
}

Мне кажется что const требование на весь трейт слишком ограничивает, но впрочем другие варианты не лучше :(

В любом случае хорошо что работы в этом направлении ведутся.

allow Trait inheritance with cycles on associated types

Фиксит старое странное поведение, которое заставляло писать

trait Sub: Super<<Self as Sub>::Assoc> {
   type Assoc;
}

вместо

trait Sub: Super<Self::Assoc> {
   type Assoc;
}
источник
Блог*
dereference_pointer_there
Хочу подчеркнуть пару моментов из последнего TWIR:
allow using generic trait methods in const fn

Этот PR добавляет возможность использовать трейты в const fn!

Это часть реализации (ещё не принятого, ммм) RFC #2632, которое предлагает позволить такое:

impl const Add for MyInt {
   fn add(self, other: Self) -> Self {
       MyInt(self.0 + other.0)
   }
}

и такое:

const fn triple_add<T: Add<Output=T>>(a: T, b: T, c: T) -> T {
   a + b + c
}

Мне кажется что const требование на весь трейт слишком ограничивает, но впрочем другие варианты не лучше :(

В любом случае хорошо что работы в этом направлении ведутся.

allow Trait inheritance with cycles on associated types

Фиксит старое странное поведение, которое заставляло писать

trait Sub: Super<<Self as Sub>::Assoc> {
   type Assoc;
}

вместо

trait Sub: Super<Self::Assoc> {
   type Assoc;
}
#prog #rust

Из более приземлённых вещей: наконец-то стабилизировали pow (и пачку схожих методов) как const fn.

Инновации!
источник
Блог*
#prog #rust #article

Статья об опыте оптимизации движка шаблонов для рендеринга документов. nom рулит.
источник
Блог*
#prog #rust #article

Статья о внутреннем устройстве BTreeMap из стандартной библиотеки Rust. Старая, вышла ещё до Rust 1.0, но она даёт хороший обзор принципиального устройства этой структуры данных вкупе с обзором различных трюков для локализации небезопасных операций. Эти трюки применяются и в современной реализации BTreeMap
источник
Блог*
#prog #rust #amazingopensource #article

Рантайм, позволяющий запускать легковесные процессы на WASM и изолировать их падения, а также ограничивать доступный процесcам API операционной системы. Обзорная статья прилагается.

А вы ещё спрашиваете, зачем WASM нужен.
источник
Блог*
#prog #rust #amazingopensource

Жора Geoffroy Couprie aka Geal в очередной раз переписал nom. На раст. С раста.

Стоило ли оно того? Определённо.

Во-первых, парсер-комбинаторы теперь вместо impl Fn(...) -> ... возвращают impl FnMut(...) -> .... Функциональность от этого не пострадала, но теперь из них убрано лишнее ограничение. Да, это означает, что теперь можно очень легко написать stateful парсер. Смиритесь с этим.

Во-вторых, парсер теперь — это не что-то, реализующее FnMut(I) -> IResult<O, E>, а что-то реализующее nom::Parser. Помимо того, что это изменение поменяло ограничения на типы аргументов комбинаторов, оно позволяет теперь некоторые комбинаторы использовать не в качестве свободных функций, а в качестве методов этого трейта. Это сильно влияет на эргономику — теперь можно написать .map(...) прямо на парсере, а также набирать альтернативные варианты парсинга цепочкой .or(...) вместо того, чтобы передавать кортеж парсеров в alt. Разумеется, у трейта есть blanket impl для замыканий, так что все старые комбинаторы продолжат работать.

В-третьих, в nom теперь должно быть удобнее пользоваться ошибками. Ошибки из nom теперь реализуют std::error::Error, комбинатор Parser::into позволяет сделать новый парсер, который применяет From к результату и ошибке парсера, а к самим ошибкам можно прицепить контекст — к сожалению, на текущий момент это может быть только &'static str.

Я рассказал лишь о наиболее примечательных, на мой взгляд, изменениях в nom, остальное (вроде улучшенного парсинга на уровне битов и повышения качества документации) вы можете сами прочитать в changelog.
источник
2020 December 04
Блог*
#prog

Кто такой Rockstar programmer? Очевидно, программист, пишущий на Rockstar.
источник
2020 December 05
Блог*
#meme #bio
источник
Блог*
источник
Блог*
Итак, сегодня 5 декабря. Чем примечателен этот день? Это — день, когда Блог* появился на свет.

Тогда мои амбиции были невелики: я считал, что этот блог будут читать только моя семья и ближайшие знакомые — полтора-два десятка человек максимум. Собственно, само название, как и логотип, я считал временным — даже думал в какой-то момент его поменять. Оглядываясь назад, легко обвинить меня в недальновидности — но с другой стороны, кто тогда мог подумать, что канал с мемасиками и заметками по расту станет... Не популярным, но всё же достаточно известным?

Тем не менее, наиболее характерные черты канала, кажется, оформились уже тогда — пачки репостов и чужого контента (но обязательно только то, что я прочитал сам), малость разбавленные собственными постами про не совсем тривиальные вещи на Rust (собственно, свой самый первый пост я и сейчас считаю довольно хардкорным — большая часть остальных постов у меня вроде попроще). С течением времени канал обрёл лицо, но не изменил заложенным в самом начало принципам. Единственное, что существенно изменилось с тех пор — это то, что с весны я начал лично приветствовать всех новых подписчиков.

Разумеется, я повлиял на канал просто в силу того, что я являюсь его единственным автором, но вот повлиял ли он на меня? На самом деле — да. По себе я знаю, что я человек, который относительно быстро увлекается чем-то новым, но так же быстро к этому охладевает, и потому я опасался, что быстро забью на блог и тот просто умрёт. Именно поэтому я дал себе обещание выкладывать на канале хоть что-то каждый день. Те, кто подписан на Блог* достаточно давно, знают, что в полной мере я сдержать это обещание не смог (некоторые дни я всё же пропускал), но всё же мой план сработал — то, что вы сейчас читаете этот пост, является живым тому подтверждением. Я целый год ежедневно занимался чем-то исключительно по собственной прихоти. Это может показаться незначительным, но для меня — человека со слабой волей — это стало достижением.

Ещё более удивительным для меня стал тот факт, что за этот год я написал в общей сложности — так, дайте-ка посчитаю — 23 оригинальных авторских поста, причём без какого-то специального намерения. Я даже сделал на Хабре перевод весьма крутой и крупной статьи, сделав себя несколько заметным и за пределами Telegram. Если бы мне в начале предыдущего года сказали бы, что я столько напишу — я бы не поверил. Блог* не только замотивировал меня заниматься им ежедневно, но и раскрыл писательскую жилку. Одним словом, он повлиял на меня куда сильнее, чем я ожидал, когда выложил тот мем с жирафом.

Но, впрочем, достаточно разговоров обо мне. Своим нынешним состоянием Блог* обязан и другим людям.
Один из них — это Олег Ковалёв (@olegkovalov), ведущий @oleg_log. Именно он, обладающий поистине гигантским терпением, терпеливо выслушивал мои замечания в духе "А вот на расте!..", проявил искренний интерес к моему блогу, сделал первый, кажется, публичный репост и, подкинув мне идею для поста, помог мне набрать первую сотню подписчиков. Олег, если ты это читаешь — спасибо тебе большое.
Другой человек — это... Тоже Олег, но другой, который ведёт небезызвестный Профунктор (я ещё застал время, когда у него была ссылка @libmustdie). Он организовал подборку, в которую попал в том числе и канал вашего (не)покорного слуги, и разом нагнал мне больше сотни подписчиков. И тебе, Олег, спасибо (а также Моноид-тян).
Также я благодарен множеству других людей — владельцам каналов, которые репостили отдельные посты и тепло отзывались о канале (Рома, я типа до сих пор помню твой комплимент). Это очень греет душу и помогает осознавать, что я стараюсь над этим каналом не ради себя одного.

Но главные, кому я хочу сказать спасибо — это моим подписчикам (слишком многочисленным, чтобы перечислить их тут поимённо). Тот факт, что вы читаете мой канал — и даёте мне ценный фидбек — помог мне перестать относиться к каналу как к какой-то блажи и начать относиться к нему как чему-то, что имеет ценность для многих людей — куда большего числа, чем с которым я бы мог познакомиться лично.
источник
Блог*
Этот день рождения Блог*а — первый, но, надо думать, отнюдь не последний. Пусть в следующий раз я смогу похвастать уже тысячами подписчиков (впрочем, я не гонюсь в первую очередь за количеством — пусть их будет поменьше, но они будут действительно читать мой блог!), пусть в следующем году оригинального контента станет больше и пусть Блог* станет уважаемым СМИ, на которое будут ссылаться международные издания. Спасибо, что довели меня до этого.

Отпразднуем снова через год! Ура!
источник