Рубрика «системное программирование» - 9

Это вторая часть цикла статей о том, как я участвовал в IOCCC'19

Как я участвовал в IOCCC-'19 (и проиграл). Часть 2: «Симулятор NOR» - 1

  1. Как я участвовал в IOCCC-'19 (и проиграл). Часть 1: «Крестики-нолики»
  2. Как я участвовал в IOCCC-'19 (и проиграл). Часть 2: «Симулятор NOR»

Я надеюсь, что данная статья поможет вам при разборе чужого кода или кода после декомпилятора или обфускатора.

Если вы еще не знаете, что такое IOCCC или вы хотите ознакомиться с более простым вариантом запутанного кода, то рекомендую обратиться к первой части.

Всем остальным я желаю приятного чтения.

Читать полностью »

Команда Rust рада объявить о новой версии Rust 1.46.0. Rust — это язык программирования, который позволяет каждому создавать надёжное и эффективное программное обеспечение.

Если у вас установлена предыдущая версия Rust через rustup, получить Rust 1.46.0 так же просто, как:

rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта и ознакомиться с подробными примечаниями к выпуску 1.46.0 на GitHub.

Что вошло в стабильную версию 1.46.0

Этот выпуск достаточно небольшой, с улучшениями в const fn, стабилизацией двух новых API в стандартной библиотеке и одной опции, удобной для авторов библиотек. Смотрите подробные примечания к выпуску чтобы узнать о других изменениях, не представленных в данном анонсе.

Читать полностью »

(прим. переводчика: времена жизни (lifetimes) — это одна из самых запутанных вещей в Rust, которая часто вызывает затруднение у новичков, даже несмотря на официальную документацию. Разъяснения по отдельным аспектам времён жизни есть, но они все разбросаны по разным источникам и ответам на Stack Overflow. Автор статьи собрал в одном месте и разъяснил множество связанных с временами жизни вопросов, что и делает эту статью столь ценной (я и сам почерпнул новое для себя отсюда). Я решил перевести её, чтобы дать возможность прочитать её тем, кто не владеет английским в достаточной степени, чтобы свободно читать оригинал, а также для того, чтобы повысить известность этой статьи среди русскоязычного Rust-сообщества)

19 мая 2020 г. · 37 минут · #rust · # lifetimes

Читать полностью »

Flipper Zero — давайте пилить вместе. Приглашаем разработчиков - 1

Flipper Zero — проект карманного мультитула для хакеров в формфакторе тамагочи, который я разрабатываю с друзьями. Предыдущие посты [1],[2],[3],[4]

За первые сутки кампании на Кикстартере мы собрали 1 млн. долларов. Откровенно говоря, никто из команды даже близко не ожидал такой популярности. В первые дни мой телефон разрывался от уведомлений, звонили от журнала Форбс до Первого канала. Я до сих пор полностью не отошел от шока и не ответил до конца на все письма. Ничего подобного я никогда в жизни не испытывал.

Огромное спасибо всем, кто поддерживал нас, следил за проектом и принимал участие. Именно на Хабре я опубликовал первый пост с концептами Флиппера, получил первый фидбек, критику и похвалу. Некоторые функции мы добавили во Флиппер именно после фидбека на Хабре. Мы постараемся не обосраться с производством и оправдать ожидания.

Сейчас я полностью уверен, что максимальная открытость и честность — это лучшая стратегия. Вся наша команда верит в open source, и мы считаем, что энтузиасты могут создавать крутые проекты без привлечения инвесторов и контроля со стороны корпораций. Поэтому я предлагаю всем, кому интересен проект, принять участие в разработке.

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

Мы уделяем много внимания инструментам разработки: участвуем в горячих спорах о редакторах (Vim или Emacs?), долго настраиваем IDE под свой вкус, и тщательно выбираем языки программирования и библиотеки, которые с каждым днем становятся все лучше и удобнее. Однако, здесь можно выделить одну категорию, которая по какой-то причине остается незаслуженно забытой: отладчики не сильно изменились за последний десяток лет, хотя по-прежнему являются одним из базовых инструментов для отлова ошибок и навигации в коде.

В поиске вопросов, или как создать новый отладчик - 1
Изображение: Timothy Dykes @timothycdykes, unsplash.com

Гораздо чаще мы предпочитаем быстро добавить пару printов вместо того, чтобы поставить в нужном месте точку останова и пройтись к ней отладчиком — и вопрос "почему?" не перестает меня занимать — ведь логи и printы дают ограниченную информацию и не позволяют интерактивно взаимодействовать с запущенным процессом (а отладчики могут работать даже и с "умершими" процессами!).

Одной из главных причин я вижу как раз отсутствие значительного прогресса в разработке отладчиков.

Читать полностью »

Исходные данные и результаты работы программ должны где-то храниться для дальнейшего использования. Их хранение нужно организовать так, чтобы мы могли быстро получить нужную информацию. За эту задачу отвечает Файловая система (FS): она предоставляет абстракцию для устройств, на которых физически хранятся данные.

В этом посте мы больше узнаем о концепциях, используемых файловыми системами, и о том, как, зная их, можно написать свою файловую систему на языке Rust.

Как написать собственную файловую систему на языке Rust - 1
Читать полностью »

Сап, котятки.

Я пришёл рассказать о проекте UAVCAN — новом сетевом стандарте для организации взаимодействия узлов и компонентов современных транспортных средств с высоким уровнем автономности/автоматизации. Название является акронимом от Uncomplicated Application-level Vehicular Communication And Networking (несложные бортовые сети и коммуникации уровня приложения).

В этой публикации объясняется текущее положение дел и тренды в области сложных бортовых систем, существующие и грядущие проблемы, как мы их решаем и каких успехов добились. Во второй части, которая будет опубликована позднее, наши коллеги из Университета Иннополис подробно осветят практическую сторону внедрения UAVCAN на примере конкретных проектов.

Издатель-подписчик для распределённых отказоустойчивых бортовых систем реального времени в 1500 строк кода - 1

Конъюнктура

Первый блин проекта был заложен в 2014-м. С самого начала это был эксперимент в минимализме: возможно ли в разработке сложных распределённых бортовых систем опираться на мощные абстракции, избегая при этом роста сложности реализации и связанных с ним трудностей валидации и верификации.

Мы наблюдаем быстрый рост сложности бортовых систем, связанный с развитием функциональных возможностей транспортных средств (особенно беспилотных) в целом, и систем автоматического управления в частности.Читать полностью »

Всем привет! Думаю, у многих сразу возник другой вопрос — а зачем вообще нужна ещё одна статья про LLVM, ведь на хабре их и так больше сотни? Моей задачей было написать "введение в тему" for the rest of us — профессиональных разработчиков, не планирующих создавать компиляторы и совершенно не интересующихся особенностями устройства LLVM IR. Насколько я знаю, подобного ещё не было.

Главное, что интересует практически всех — и о чём я планирую рассказать — вынесено в заголовок статьи. Зачем нужен LLVM, когда есть GCC и Visual C++? А если вы не программируете на C++, вам стоит беспокоиться? И вообще, LLVM это Clang? Или нет? И что эти четыре буквы на самом деле означают?

Читать полностью »

Предлагаю вашему вниманию перевод статьи, в которой высказывается интересная точка зрения на размер релизов/задач при разработке информационных систем. По мнению Аллана Келли, при разработке ПО отсутствует экономия на масштабе, а при увеличении объема задач/релизов экономика только ухудшается. Статья содержит примеры и доводы, иллюстрирующие это, и автор рекомендует стараться ставить небольшие и конкретные задачи, работать более мелкими релизами. Пытливый читатель сразу задаст вопросы: «Можно ли из этого сделать вывод, что необходимо максимально уменьшать размер задач/релизов? Где же тогда этот предел? Нужно ли выводить в продуктив по одной строчке кода?» Эти вопросы, к сожалению, не раскрыты в статье. По моему личному опыту, в имеющихся условиях у команды существует некоторый оптимальный размер задач/релизов, который определяется зрелостью процессов, спецификой культуры команды и уровнем развития инженерных практик. Для кого-то это три месяца, для кого-то это одна неделя, кто-то способен работать в режиме  непрерывной поставки… Однако если инвестировать в то, чтобы команда научилась бы работать меньшими задачами/релизами, то это впоследствии принесет долгосрочную отдачу.

Программное обеспечение дешевле в мелкой таре - 1

Читать полностью »

Команда Rust рада сообщить о выпуске новой версии, 1.45.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.

Если вы установили предыдущую версию Rust средствами rustup, то для обновления до версии 1.45.0 вам достаточно выполнить следующую команду:

rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть на GitHub.

Что вошло в стабильную версию 1.45.0

Данный выпуск содержит два больших изменения: исправление давних дефектов при преобразовании между целыми числами и числами с плавающей точкой и стабилизация фич, необходимых для того, чтобы как минимум один веб-фреймворк смог работать на стабильном Rust.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js