<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Все статьи подряд / Компиляторы / Хабр]]></title>
    <link>https://habr.com/ru/hubs/compilers/articles/</link>
    <description><![CDATA[Компиляторы – из исходного кода в машинный]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Wed, 14 Oct 2026 14:15:48 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Генератор парсеров ISPA]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1092938/</guid>
      <link>https://habr.com/ru/articles/1092938/?utm_campaign=1092938&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/7b/0b/00/7b0b00ade65744637b853a52de71093c.png" /><p>Этот пост написан для тех, кто глубоко погружён в разработку компиляторов или DSL, часто сталкивается с задачами парсинга, строит сложные конфигурации или движки с нуля. Этот инструмент предназначен для разбора большинства контекстно-свободных языков с минимальными усилиями. Он не претендует на то, чтобы генерировать код, который невозможно превзойти по производительности, — добиться более высокой производительности в написанном вручную парсере всё же сложнее.</p><p>Следует философии:</p><p>1. Статическая генерация. Никакой генерации в рантайме<br>2. Отсутствие зависимостей — сгенерированный парсер должен легко настраиваться<br>3. Вывод на несколько языков<br>4. Семантические действия и обработка ошибок прямо в грамматике, без её раздувания<br>5. Гибкость использования как в тривиальных, так и в очень крупных проектах<br>6. Простой в использовании API</p> <a href="https://habr.com/ru/articles/1092938/?utm_campaign=1092938&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 11 Oct 2026 13:57:46 GMT</pubDate>
      <dc:creator><![CDATA[Yuriy200]]></dc:creator>
      
      <category>parser</category><category>parser-generator</category><category>compiler</category><category>cpp</category><category>open-source</category><category>dsl</category><category>backend-разработка</category><category>performance optimization</category><category>easy</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Как мы научили JavaScript анализатор понимать поток управления]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/pvs-studio/articles/1092542/</guid>
      <link>https://habr.com/ru/companies/pvs-studio/articles/1092542/?utm_campaign=1092542&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/b1/95/90/b195904c6be3a1234dd14b04d5cc350d.png" /><p>Недавно в статический анализатор PVS-Studio была добавлена поддержка JavaScript/TypeScript, и он на старте умеет искать ошибки, связанные с потоком управления. Причём тут граф потока управления, как мы его добавили и чем это полезно — читайте в этой статье.</p> <a href="https://habr.com/ru/articles/1092542/?utm_campaign=1092542&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 09 Oct 2026 15:01:18 GMT</pubDate>
      <dc:creator><![CDATA[Volokhovskii (PVS-Studio)]]></dc:creator>
      
      <category><![CDATA[CFG]]></category><category><![CDATA[статический анализ]]></category><category><![CDATA[Анализ потока управления]]></category><category><![CDATA[javascript]]></category><category><![CDATA[typescript]]></category><category><![CDATA[open source]]></category><category><![CDATA[компиляторы]]></category><category><![CDATA[static analysis]]></category><category><![CDATA[compiler]]></category><category><![CDATA[компилятор]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Разработка виртуальной RTOS для ПЛК на микроконтроллере]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1091398/</guid>
      <link>https://habr.com/ru/articles/1091398/?utm_campaign=1091398&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/1b8/270/1af/1b82701afff96485e47cbf2937dbd336.jpg" /><p>Хотя я считаю свой проект серьезным - не являюсь узким специалистом по разработке ОС. Проект пока любительский, и могу позволить себе некоторую свободу по разработке. Тут ставил для себя такие задачи:</p> <a href="https://habr.com/ru/articles/1091398/?utm_campaign=1091398&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 07 Oct 2026 07:54:24 GMT</pubDate>
      <dc:creator><![CDATA[zoshytlogic]]></dc:creator>
      
      <category><![CDATA[компилятор]]></category><category><![CDATA[rtos осрв]]></category><category><![CDATA[микроконтроллеры]]></category><category><![CDATA[embedded]]></category><category><![CDATA[асу тп]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[С нуля до чипа: программирование FPGA на t27]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1090704/</guid>
      <link>https://habr.com/ru/articles/1090704/?utm_campaign=1090704&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/c7f/c35/c60/c7fc35c601a1a02bd3e00f3a920b783a.png" /><p>Большинство курсов по FPGA начинаются со слов «установите Vivado». Мы пошли с другого конца: в каждом из 27 уроков есть рабочий виджет, собранный из реальных запусков на нашем стенде. Сначала разбираем, что такое FPGA и как числа становятся битами. Потом пишем спеку на t27, компилируем её t27c и превращаем в битстрим на плате. В конце — лаборатория из трёх уроков о наших собственных исследованиях, включая результаты, которые нам не понравились. Каждая картинка ниже — снимок живого виджета; нажмите, чтобы открыть его.</p> <a href="https://habr.com/ru/articles/1090704/?utm_campaign=1090704&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 05 Oct 2026 17:20:58 GMT</pubDate>
      <dc:creator><![CDATA[raoffonom]]></dc:creator>
      
      <category><![CDATA[FPGA]]></category><category><![CDATA[Компиляторы]]></category><category><![CDATA[Open source]]></category><category><![CDATA[Машинное обучение]]></category><category><![CDATA[artix-7]]></category><category><![CDATA[yosys]]></category><category><![CDATA[nextpnr]]></category><category><![CDATA[троичная логика]]></category><category><![CDATA[квантование]]></category><category><![CDATA[t27]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Сфера — полностью кириллический язык программирования: от «Привет, мир» до HTTP‑сервера и bare‑metal]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1090318/</guid>
      <link>https://habr.com/ru/articles/1090318/?utm_campaign=1090318&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/033/bd9/f62/033bd9f6238693c404c135314b0a39b6.png" /><p>На&nbsp;фоне десятков языков с&nbsp;привычным английским синтаксисом появление «Сферы» выглядит почти вызовом: это полностью кириллический язык программирования с&nbsp;настоящим компилятором&nbsp;— не&nbsp;интерпретатор и не&nbsp;транспайлер, а&nbsp;генерация машинного кода через LLVM. </p><p>За&nbsp;внешней необычностью стоит вполне зрелая инженерия: автоматическое управление памятью, обобщённые типы, контракты, многопоточность, сеть, графика, пакетный менеджер поверх git и отладчик с&nbsp;полноценной поддержкой DWARF. «Сфера» не&nbsp;претендует на&nbsp;то, чтобы заменить индустриальные языки&nbsp;— но&nbsp;доказывает, что&nbsp;кириллический синтаксис способен&nbsp;быть не&nbsp;курьёзом, а&nbsp;рабочим инструментом. И в&nbsp;этой статье честно говорим не&nbsp;только о&nbsp;том, что&nbsp;уже получилось, но&nbsp;и о&nbsp;том, что&nbsp;ещё предстоит сделать.</p> <a href="https://habr.com/ru/articles/1090318/?utm_campaign=1090318&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 05 Oct 2026 07:14:58 GMT</pubDate>
      <dc:creator><![CDATA[Voknemilk]]></dc:creator>
      
      <category><![CDATA[Сфера]]></category><category><![CDATA[язык программирования]]></category><category><![CDATA[компилятор]]></category><category><![CDATA[Rust]]></category><category><![CDATA[LLVM]]></category><category><![CDATA[кириллица]]></category><category><![CDATA[пакетный менеджер]]></category><category><![CDATA[многопоточность]]></category><category><![CDATA[ARC]]></category><category><![CDATA[отладчик]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Rust 1.99.0: функции с переменным числом аргументов, информация о схеме размещения типа]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1089692/</guid>
      <link>https://habr.com/ru/articles/1089692/?utm_campaign=1089692&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Команда Rust рада сообщить о новой версии языка — 1.99.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.</p><p>Если у вас есть предыдущая версия Rust, установленная через <code>rustup</code>, то для обновления до версии 1.99.0 вам достаточно выполнить команду:</p><p><code>$ rustup update stable </code></p><p>Если у вас ещё не установлен <code>rustup</code>, вы можете установить его с <a href="https://www.rust-lang.org/install.html" rel="noopener nofollow">соответствующей страницы</a> нашего веб-сайта, а также посмотреть <a href="https://doc.rust-lang.org/stable/releases.html#version-1990-2026-10-01" rel="noopener nofollow">подробные примечания к выпуску 1.99.0</a>.</p><p>Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (<code>rustup default beta</code>) или nightly (<code>rustup default nightly</code>). Пожалуйста, <a href="https://github.com/rust-lang/rust/issues/new/choose" rel="noopener nofollow">сообщайте</a> обо всех встреченных вами ошибках!</p> <a href="https://habr.com/ru/articles/1089692/?utm_campaign=1089692&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 02 Oct 2026 13:53:45 GMT</pubDate>
      <dc:creator><![CDATA[RustLangRu]]></dc:creator>
      
      <category>cargo</category><category>clippy</category><category>rustc</category><category>rust</category><category>rustfmt</category><category>release</category><category>stable</category><category>перевод</category><category>новости технологий</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[ROUGE‑V: как я транслировал CUDA/PTX в LLVM IR и запускал его без CUDA runtime]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1089146/</guid>
      <link>https://habr.com/ru/articles/1089146/?utm_campaign=1089146&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/ef8/c44/228/ef8c4422878f53b6f3debb770b4ac62b.png" /><p>Я написал транслятор CUDA/PTX в&nbsp;LLVM IR: он берёт PTX от&nbsp;настоящего <code>nvcc</code> и собирает его обычным <code>clang</code>. Восемь ядер уже исполнены на&nbsp;живой GeForce MX450&nbsp;и побитово совпали с&nbsp;хост‑эталоном. А&nbsp;главное&nbsp;— как&nbsp;настоящий <code>nvcc</code> и видеокарта сломали мои зелёные тесты.</p> <a href="https://habr.com/ru/articles/1089146/?utm_campaign=1089146&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 01 Oct 2026 12:40:48 GMT</pubDate>
      <dc:creator><![CDATA[MrModelOS]]></dc:creator>
      
      <category><![CDATA[CUDA]]></category><category><![CDATA[PTX]]></category><category><![CDATA[LLVM]]></category><category><![CDATA[компиляторы]]></category><category><![CDATA[NVIDIA]]></category><category><![CDATA[GPGPU]]></category><category><![CDATA[RISC-V]]></category><category><![CDATA[AMDGPU]]></category><category><![CDATA[транспиляция]]></category><category><![CDATA[GPU]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как я перенёс сборку лексера в compile-time]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1087280/</guid>
      <link>https://habr.com/ru/articles/1087280/?utm_campaign=1087280&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/63d/ad7/0f6/63dad70f611538bae2e3b896786f4fb4.png" /><p>Я написал <code>source generator</code> для лексера <a href="https://github.com/Stepami/hydrascript" rel="noopener nofollow">HydraScript</a>. Он собирал регулярное выражение из описаний токенов. После этого мне оставалось скопировать регулярку и руками вставить её в другой файл.</p><p>Даже тест на забытое копирование пришлось завести. Довольно много усилий, чтобы поддерживать одну строку в актуальном состоянии.</p><p>Проблема была в том, что результат моего генератора требовался другому генератору — тому, который стоит за атрибутом <code>[GeneratedRegex]</code> в .NET. Хотелось описать токен один раз и поручить остальное сборке. Для этого пришлось разобраться, в каком порядке Roslyn вообще выполняет генераторы.</p> <a href="https://habr.com/ru/articles/1087280/?utm_campaign=1087280&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 27 Sep 2026 22:05:28 GMT</pubDate>
      <dc:creator><![CDATA[Stefanio]]></dc:creator>
      
      <category><![CDATA[лексер]]></category><category><![CDATA[lexer]]></category><category><![CDATA[regex]]></category><category><![CDATA[регулярки]]></category><category><![CDATA[регулярные выражения]]></category><category><![CDATA[source generators]]></category><category><![CDATA[roslyn]]></category><category><![CDATA[компилятор]]></category><category><![CDATA[compiler]]></category><category><![CDATA[автоматизация]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Я удалил классы, но оставил объекты с методами]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1086432/</guid>
      <link>https://habr.com/ru/articles/1086432/?utm_campaign=1086432&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/e60/6ae/c3c/e606aec3c590d13dcef795c31af6d201.png" /><p><a href="https://github.com/Stepami/hydrascript" rel="noopener nofollow">HydraScript</a>&nbsp;— мой интерпретатор на&nbsp;C#. В&nbsp;нём есть объекты, статическая типизация и вызовы методов. А <code>class</code>, <code>interface</code> и <code>constructor</code> я вообще не&nbsp;добавлял.</p><p>Точке на&nbsp;плоскости нужны две координаты, для&nbsp;вычисления расстояния до&nbsp;другой точки нужна функция. Хотелось, чтобы эти вещи работали без&nbsp;обязательной упаковки в&nbsp;класс.</p><p>Тут я вдохновлялся сразу двумя языками: <a href="https://www.typescriptlang.org/docs/handbook/type-compatibility.html" rel="noopener nofollow">структурной типизацией TypeScript</a> и <a href="https://go.dev/ref/spec#Method_declarations" rel="noopener nofollow">методами с&nbsp;явным получателем из&nbsp;Go</a>. Подход Go заодно сильно упрощал жизнь мне самому&nbsp;— автору языка. Функции у&nbsp;меня уже работали, и методы можно&nbsp;было построить на&nbsp;их основе, не&nbsp;вдаваясь в&nbsp;реализацию классов.</p> <a href="https://habr.com/ru/articles/1086432/?utm_campaign=1086432&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 24 Sep 2026 22:44:53 GMT</pubDate>
      <dc:creator><![CDATA[Stefanio]]></dc:creator>
      
      <category><![CDATA[методы]]></category><category><![CDATA[классы]]></category><category><![CDATA[объекты]]></category><category><![CDATA[функции]]></category><category><![CDATA[ооп]]></category><category><![CDATA[протоколы]]></category><category><![CDATA[структуры]]></category><category><![CDATA[фп]]></category><category><![CDATA[перегрузка функций]]></category><category><![CDATA[перегрузка методов]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[В 100 раз эффективнее ARM: потоковый процессор Electron E1]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/1085154/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/1085154/?utm_campaign=1085154&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/be0/ef3/07c/be0ef307c5c896b2639b031e183a6396.webp" /><p>Если энергопотребление ЦОДов будет и дальше расти, то для них придётся выкупать мощности АЭС, как это сделали <a href="https://www.npr.org/2024/09/20/nx-s1-5120581/three-mile-island-nuclear-power-plant-microsoft-ai">Microsoft</a> и <a href="https://www.reuters.com/business/energy/talen-energy-amazon-sign-nuclear-power-deal-fuel-data-centers-2025-06-11/">Amazon</a>. Но должен быть другой выход. Поэтому есть большая потребность в энергоэффективных CPU.</p><p>Год назад стартап <a href="https://www.efficient.computer/">Efficient Computer</a> представил «самый энергоэффективный в мире» процессор <a href="https://www.efficient.computer/electron-e1">Electron E1</a>. Разработчики попытались заново изобрести универсальный CPU, ориентируясь именно на энергоэффективность. Правда, конкретно этот CPU предназначен для embedded-систем, но схожую архитектуру применяют и для ЦОДов.</p><p>Новый CPU в 10−100 раз эффективнее ARM на типичных embedded-задачах, таких как быстрое преобразование Фурье (по данным с сенсоров) или выполнение свёрток (вычисление карты признаков) в свёрточных нейросетях.</p><p>Сейчас E1 и компилятор проходят тестирование среди разработчиков. Участники закрытой программы тестирования могут проверить свой код С и С++ в веб-песочнице, оценить его энергоэффективность на новом CPU.</p> <a href="https://habr.com/ru/articles/1085154/?utm_campaign=1085154&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 23 Sep 2026 09:02:05 GMT</pubDate>
      <dc:creator><![CDATA[programmerguru (RUVDS.com)]]></dc:creator>
      
      <category><![CDATA[ruvds_статьи]]></category><category><![CDATA[ARM]]></category><category><![CDATA[Electron E1]]></category><category><![CDATA[Efficient Computer]]></category><category><![CDATA[архитектура фон неймана]]></category><category><![CDATA[архитектура CPU]]></category><category><![CDATA[компилятор]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Native AOT заставил меня переписать весь .NET проект]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1085386/</guid>
      <link>https://habr.com/ru/articles/1085386/?utm_campaign=1085386&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/aee/eb3/1b4/aeeeb31b465784395dab228f0b339d0a.png" /><p>Мне хотелось, чтобы знакомство с <a href="https://github.com/Stepami/hydrascript" rel="noopener nofollow">HydraScript</a> выглядело просто: скачал интерпретатор, запустил скрипт. Сомнительно предлагать человеку сначала установить подходящий .NET Runtime ради моего языка программирования.</p><p>Переход на Native AOT поначалу казался правкой <code>.csproj</code>. Включил настройку, опубликовал бинарник, пошёл дальше. На практике пришлось переписать всё. Досталось даже интеграционным тестам. А в процессе рефакторинга ещё и пропали логи.</p> <a href="https://habr.com/ru/articles/1085386/?utm_campaign=1085386&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 22 Sep 2026 20:02:39 GMT</pubDate>
      <dc:creator><![CDATA[Stefanio]]></dc:creator>
      
      <category><![CDATA[csharp]]></category><category><![CDATA[dotnet]]></category><category><![CDATA[c#]]></category><category><![CDATA[native applications]]></category><category><![CDATA[native aot]]></category><category><![CDATA[publish]]></category><category><![CDATA[nuget]]></category><category><![CDATA[.net]]></category><category><![CDATA[compilers]]></category><category><![CDATA[рефакторинг]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Почему &quot;+=&quot; сложнее реализовать, чем &quot;+&quot;: опыт HydraScript]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1084870/</guid>
      <link>https://habr.com/ru/articles/1084870/?utm_campaign=1084870&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/216/167/88c/21616788cd4ae2bef51786a59324f3bf.png" /><p>Мой язык программирования <a href="https://github.com/Stepami/hydrascript" rel="noopener nofollow">HydraScript</a>, написанный на C#, уже умел выполнять такой код:</p><p><code>let x = 10 x = x + 1 &gt;&gt;&gt; x </code></p><p>Получаем <code>11</code>; <code>&gt;&gt;&gt;</code> — это оператор вывода. Присваивание работает, сложение работает. Захотелось добавить привычное сокращение:</p><p><code>let x = 10 x += 1 &gt;&gt;&gt; x </code></p><p>Результат должен остаться тем же — <code>11</code>. Зачем учить весь компилятор ещё одной операции, если всё необходимое у него уже есть? Можно прямо в парсере превратить <code>x += 1</code> в дерево для <code>x = x + 1</code>.</p><p>Эта часть уместилась в несколько строк. Основная работа досталась методу <code>Clone()</code>.</p> <a href="https://habr.com/ru/articles/1084870/?utm_campaign=1084870&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 21 Sep 2026 18:25:13 GMT</pubDate>
      <dc:creator><![CDATA[Stefanio]]></dc:creator>
      
      <category><![CDATA[компиляторы]]></category><category><![CDATA[ast]]></category><category><![CDATA[clone]]></category><category><![CDATA[operator]]></category><category><![CDATA[csharp]]></category><category><![CDATA[dotnet]]></category><category><![CDATA[compiler]]></category><category><![CDATA[abstract syntax tree]]></category><category><![CDATA[абстрактное синтаксическое дерево]]></category><category><![CDATA[синтаксис]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Ускорение Python-сервиса с CinderX: JIT и статическая типизация]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1084420/</guid>
      <link>https://habr.com/ru/articles/1084420/?utm_campaign=1084420&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/483/e75/4d5/483e754d55cc829a79b6c73aae2d7dd3.png" /><p>У любого ускорителя Python есть число: во сколько раз он быстрее. Меряют его на ядрах - сортировка, обход дерева, арифметика в цикле. Сервис устроен не так: обработчик ходит в базу, считает в numpy, сериализует ответ, и байткода, к которому это число применимо, в нём может почти не остаться. CinderX ускоряет байткод, и за пределы байткода это число не распространяется. Доля байткода в вашем сервисе - свойство вашего кода, а не расширения, и пока она не посчитана, «ставить или нет» решается угадыванием.</p> <a href="https://habr.com/ru/articles/1084420/?utm_campaign=1084420&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 21 Sep 2026 07:01:18 GMT</pubDate>
      <dc:creator><![CDATA[ivankov_timofei]]></dc:creator>
      
      <category><![CDATA[python]]></category><category><![CDATA[jit]]></category><category><![CDATA[cinderx]]></category><category><![CDATA[cpython]]></category><category><![CDATA[производительность]]></category><category><![CDATA[байткод]]></category><category><![CDATA[сборщик мусора]]></category><category><![CDATA[оптимизация]]></category><category><![CDATA[типизация]]></category><category><![CDATA[static python]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как я учил планировщик класть широкие команды для Эльбруса, и почему LLM проиграла жадному алгоритму за 3 миллисекунды]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1082094/</guid>
      <link>https://habr.com/ru/articles/1082094/?utm_campaign=1082094&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/733/24e/39d/73324e39d2a8b7e3a84291bacf32d71c.jpg" /><p>Проще говоря, NEX CLI x Elbrus берет граф и модель e2k‑v6&nbsp;и показывает: сколько насчитал жадный, сколько мог&nbsp;бы идеальный, и на&nbsp;какой операции и каком канале разница.</p> <a href="https://habr.com/ru/articles/1082094/?utm_campaign=1082094&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 14 Sep 2026 13:43:17 GMT</pubDate>
      <dc:creator><![CDATA[Shmon]]></dc:creator>
      
      <category><![CDATA[Эльбрус]]></category><category><![CDATA[ИИ]]></category><category><![CDATA[процессоры эльбрус]]></category><category><![CDATA[cli]]></category><category><![CDATA[open-source]]></category><category><![CDATA[энтузиасты]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Положил http:// в строку, и ассемблер молча собрал 0 байт]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1080490/</guid>
      <link>https://habr.com/ru/articles/1080490/?utm_campaign=1080490&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/374/7f1/2a5/3747f12a5057d3ab2495b4609ea4267a.png" /><p>Мой ассемблер резал исходник построчными правилами: срезал комментарий, искал двоеточие, делил по запятым. Я заменил это одним проходом с состоянием и попутно проверил, нельзя ли было обойтись заплатками. </p><p>Нельзя: вторая заплатка ломает то, что починила первая.</p> <a href="https://habr.com/ru/articles/1080490/?utm_campaign=1080490&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Куда делись байты?</a>]]></description>
      
      <pubDate>Wed, 09 Sep 2026 17:01:58 GMT</pubDate>
      <dc:creator><![CDATA[Pro100lamer]]></dc:creator>
      
      <category><![CDATA[лексер]]></category><category><![CDATA[токенизатор]]></category><category><![CDATA[разбор текста]]></category><category><![CDATA[ассемблер]]></category><category><![CDATA[RISC-V]]></category><category><![CDATA[комментарии]]></category><category><![CDATA[строковые литералы]]></category><category><![CDATA[регрессия]]></category><category><![CDATA[RV32I]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Шаблоны против статической рефлексии в C++: пять операций, две реализации и дедупликация, которая не стоит памяти]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1079828/</guid>
      <link>https://habr.com/ru/articles/1079828/?utm_campaign=1079828&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/c79/3e1/b2d/c793e1b2d4f562159000a9356010da11.png" /><p>Одна и та же операция — дедупликация списка типов — написана двумя способами: на шаблонах и на статической рефлексии из C++26. Обе реализации живут в одном дереве и проверены на идентичность результата, поэтому их можно честно вычесть друг из друга. Получилось так: шаблонная версия съедает 7,9 ГиБ памяти компилятора там, где рефлексивная не съедает ничего измеримого — ±21 МиБ на 32-кратном диапазоне размеров. А по времени обе квадратичны, и рефлексия выигрывает всего пятую часть. Разбираю, откуда берётся такая асимметрия, и заодно пять компиляторных стен, в которые упираешься по дороге, — включая sizeof…, который молча возвращает неверное число.</p> <a href="https://habr.com/ru/articles/1079828/?utm_campaign=1079828&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 08 Sep 2026 11:01:57 GMT</pubDate>
      <dc:creator><![CDATA[DenisT]]></dc:creator>
      
      <category><![CDATA[c++]]></category><category><![CDATA[c++26]]></category><category><![CDATA[метапрограммирование]]></category><category><![CDATA[шаблоны c++]]></category><category><![CDATA[рефлексия]]></category><category><![CDATA[p2996]]></category><category><![CDATA[clang]]></category><category><![CDATA[бенчмарки]]></category><category><![CDATA[время компиляции]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как миллениалы переизобрели контрактное программирование для ИИ]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1077370/</guid>
      <link>https://habr.com/ru/articles/1077370/?utm_campaign=1077370&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/a6c/714/ec0/a6c714ec0af67a43ccad56943076924b.png" /><p>Личная история о том, как двадцатилетняя мечта о математически доказуемом коде неожиданно стала ответом на главный вызов эпохи ИИ-агентов.  </p> <a href="https://habr.com/ru/articles/1077370/?utm_campaign=1077370&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 01 Sep 2026 18:21:37 GMT</pubDate>
      <dc:creator><![CDATA[diflux]]></dc:creator>
      
      <category><![CDATA[контрактное программирование]]></category><category><![CDATA[ии-агенты]]></category><category><![CDATA[детерминизм]]></category><category><![CDATA[ai-разработка]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Отступы или скобочки? — Да]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1077166/</guid>
      <link>https://habr.com/ru/articles/1077166/?utm_campaign=1077166&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/445/fe7/666/445fe76666f73e20ce6b560fe713d253.jpeg" /><p>Спор «скобочки или отступы» старше, чем некоторые из его участников. У этого спора нет судьи и нет призового фонда, но есть ветераны и есть потерянные души, которые однажды написали <code>end</code> в Питоне и с тех пор не могут остановиться. Выиграть этот спор невозможно: стороны спорят о вкусах, а не о свойствах. Поэтому предлагаю - давайте закончим этот спор не победой, а разоружением.</p><p>Я написал маленькую утилиту, которая переводит исходный код Python между тремя синтаксисами: классические отступы, C-подобные фигурные скобки, S-выражения в духе Лиспа. Один и тот же quicksort, три вида:</p> <a href="https://habr.com/ru/articles/1077166/?utm_campaign=1077166&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 01 Sep 2026 11:26:58 GMT</pubDate>
      <dc:creator><![CDATA[wirewalk]]></dc:creator>
      
      <category><![CDATA[Python]]></category><category><![CDATA[Lisp]]></category><category><![CDATA[S-выражения]]></category><category><![CDATA[синтаксис]]></category><category><![CDATA[AST]]></category><category><![CDATA[конвертер]]></category><category><![CDATA[отступы]]></category><category><![CDATA[скобки]]></category><category><![CDATA[Nim]]></category><category><![CDATA[холивар]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Rust 1.98.0: алгебраические методы для f32,f64, исправление взаимодействия между ManuallyDrop и Box]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1076554/</guid>
      <link>https://habr.com/ru/articles/1076554/?utm_campaign=1076554&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Команда Rust рада объявить о выходе новой версии Rust — 1.98.0. Rust — это язык программирования, который помогает каждому создавать надёжное и эффективное программное обеспечение.</p><p>Если у вас уже установлена предыдущая версия Rust через <code>rustup</code>, вы можете получить 1.98.0 командой:</p><p><code>$ rustup update stable </code></p><p>Если Rust ещё не установлен, вы можете получить <a href="https://www.rust-lang.org/install.html" rel="noopener nofollow"><code>rustup</code></a> на соответствующей странице нашего сайта и ознакомиться с <a href="https://doc.rust-lang.org/stable/releases.html#version-1980-2026-08-20" rel="noopener nofollow">подробными release notes для 1.98.0</a>.</p><p>Если вы хотите помочь нам, тестируя будущие релизы, рассмотрите возможность переключиться локально на beta-канал (<code>rustup default beta</code>) или nightly-канал (<code>rustup default nightly</code>). Пожалуйста, <a href="https://github.com/rust-lang/rust/issues/new/choose" rel="noopener nofollow">сообщайте</a> о любых обнаруженных ошибках!</p> <a href="https://habr.com/ru/articles/1076554/?utm_campaign=1076554&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 31 Aug 2026 07:23:00 GMT</pubDate>
      <dc:creator><![CDATA[RustLangRu]]></dc:creator>
      
      <category>cargo</category><category>clippy</category><category>rustc</category><category>rust</category><category>rustfmt</category><category>release</category><category>stable</category><category>перевод</category><category>новости технологий</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Написал свой ассемблер, чтобы понять, откуда берётся ff010113. Почти половину моей программы он выдумывает]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1076022/</guid>
      <link>https://habr.com/ru/articles/1076022/?utm_campaign=1076022&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/e68/185/3aa/e681853aae524264466d34a86f4a991e.png" /><p>Написал свой ассемблер, чтобы понять, откуда в дизассемблере берётся ff010113. Заодно посчитал, сколько строк моей программы процессор вообще не умеет исполнять, и проверил это на четырёх наборах команд, включая живой ESP32 на столе. На кристалле первая программа серии сломалась: она пишет в UART быстрее, чем провод успевает передавать, и в эмуляторе этого не видно.</p> <a href="https://habr.com/ru/articles/1076022/?utm_campaign=1076022&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Что сказала плата?</a>]]></description>
      
      <pubDate>Fri, 28 Aug 2026 20:55:03 GMT</pubDate>
      <dc:creator><![CDATA[Pro100lamer]]></dc:creator>
      
      <category><![CDATA[RISC-V]]></category><category><![CDATA[ассемблер]]></category><category><![CDATA[кодирование инструкций]]></category><category><![CDATA[псевдоинструкции]]></category><category><![CDATA[RV32I]]></category><category><![CDATA[компоновщик]]></category><category><![CDATA[релокация]]></category><category><![CDATA[bare metal]]></category><category><![CDATA[QEMU]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Компилятор удалил вашу проверку на переполнение. И он прав]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/otus/articles/1072096/</guid>
      <link>https://habr.com/ru/companies/otus/articles/1072096/?utm_campaign=1072096&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/7aa/9f3/85f/7aa9f385f82fbeda963a3dc4cdd5697d.png" /><p>Проверка на&nbsp;переполнение есть в&nbsp;коде, проходит ревью и работает в&nbsp;отладочной сборке&nbsp;— а&nbsp;после оптимизации исчезает из&nbsp;бинарника. Разберём, почему компилятор имеет на&nbsp;это полное право, как&nbsp;неопределённое поведение влияет на&nbsp;указатели, память и проверки, и чем ловить такие ошибки до&nbsp;того, как&nbsp;они проявятся в&nbsp;рабочей среде. </p> <a href="https://habr.com/ru/articles/1072096/?utm_campaign=1072096&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Разобраться в UB</a>]]></description>
      
      <pubDate>Fri, 28 Aug 2026 11:40:45 GMT</pubDate>
      <dc:creator><![CDATA[badcasedaily1 (OTUS)]]></dc:creator>
      
      <category><![CDATA[C]]></category><category><![CDATA[неопределённое поведение]]></category><category><![CDATA[компилятор]]></category><category><![CDATA[оптимизация кода]]></category><category><![CDATA[переполнение целых чисел]]></category><category><![CDATA[указатели]]></category><category><![CDATA[управление памятью]]></category><category><![CDATA[strict aliasing]]></category><category><![CDATA[UBSan]]></category><category><![CDATA[системное программирование]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Переписал ядро языка целиком. Ни один из 444 эталонов не сдвинулся]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1074456/</guid>
      <link>https://habr.com/ru/articles/1074456/?utm_campaign=1074456&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/707/012/c80/707012c80e140cde0c01deeb3f48d148.png" /><p>Свой язык программирования пишут все. Обычно это калькулятор с переменными, пересказ главы про рекурсивный спуск и заброшенный репозиторий.</p><p>Интересно в моём не то, что он считает выражения. За время работы я дважды полностью переименовал проект, вырезал из ядра обход дерева и заменил компиляцией в замыкания, поднял скорость втрое и прогнал по языку два фаззера. Любой из этих шагов мог тихо сломать что угодно.</p><p>Не сломал. Полная перестройка ядра — 350 строк — прошла все 444 проверки, и ни один эталон не пришлось трогать.</p><p>Разбираю, что для этого пришлось построить: пять замков, каждый из которых закрывает то, что гниёт молча — вывод примеров в документации, списки слов в подсветке синтаксиса, формулировки сообщений об ошибках. Почему стенд замеров строится до первой оптимизации, а не после. И как выяснилось, что запас стека я всё это время мерил неправильно.</p><p>Плюс двенадцать дефектов, которые нашёл фаззер: равенство, переставшее быть симметричным; undefined, вылезающий наружу в языке, где его нет; += , вычислявший цель дважды. Два из двенадцати нашёл не фаззер, а я — когда писал тесты к его находкам.</p><p>Отдельно — про то, что четыре из пяти находок второго фаззера оказались враньём самого фаззера, и почему я довёл его до нуля ложных срабатываний вместо «ну там четыре из них шум».</p> <a href="https://habr.com/ru/articles/1074456/?utm_campaign=1074456&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 26 Aug 2026 05:01:46 GMT</pubDate>
      <dc:creator><![CDATA[botiroff]]></dc:creator>
      
      <category><![CDATA[компиляторы]]></category><category><![CDATA[интерпретатор]]></category><category><![CDATA[язык программирования]]></category><category><![CDATA[typescript]]></category><category><![CDATA[node.js]]></category><category><![CDATA[тестирование]]></category><category><![CDATA[фаззинг]]></category><category><![CDATA[golden-тесты]]></category><category><![CDATA[оптимизация производительности]]></category><category><![CDATA[регрессионные тесты]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Моё представление об идеальном системном языке программирования]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1071836/</guid>
      <link>https://habr.com/ru/articles/1071836/?utm_campaign=1071836&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>На&nbsp;пороге 2027&nbsp;год, и с&nbsp;момента появления языка Си прошло уже более 50&nbsp;лет… Но, что&nbsp;удивительно, за&nbsp;все эти годы так и не&nbsp;появилось идеальной альтернативы этому языку. Поэтому, ради интереса, я попробовал разработать дизайн своего «идеального» языка. И теперь я хочу рассказать о&nbsp;том, что&nbsp;у&nbsp;меня получилось.</p> <a href="https://habr.com/ru/articles/1071836/?utm_campaign=1071836&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 24 Aug 2026 21:00:48 GMT</pubDate>
      <dc:creator><![CDATA[Denis535]]></dc:creator>
      
      <category><![CDATA[compiler]]></category><category><![CDATA[compiler development]]></category><category><![CDATA[compiler design]]></category><category><![CDATA[c language]]></category><category><![CDATA[c++ language]]></category><category><![CDATA[c++]]></category><category><![CDATA[language]]></category><category><![CDATA[language design]]></category><category><![CDATA[programming language]]></category><category><![CDATA[system programming]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Swift на Apple II. Часть 2: среда разработки и сборка с ИИ]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/cloud4y/articles/1073694/</guid>
      <link>https://habr.com/ru/companies/cloud4y/articles/1073694/?utm_campaign=1073694&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/a6f/457/56f/a6f45756f6f4ebf3ca85a8c549416620.png" /><p>В первой части мы разобрали язык, компилятор и байткод SwiftII — Swift-подобной среды для Apple II 1977 года. Но чтобы на этой машине действительно писать код, одного интерпретатора мало: клавиатура без строчных букв и обратного слэша, дисплей без половины нужных символов, 64 КБ памяти, которые приходится переключать банками. Во второй части — как автор всё это обошёл (собственный редактор, файловый браузер, ввод через диграфы) и, отдельно, как весь проект собирался с помощью Claude Code и Codex: честный разбор, где ИИ реально помог, а где им пришлось управлять вручную.  </p> <a href="https://habr.com/ru/articles/1073694/?utm_campaign=1073694&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 24 Aug 2026 09:44:40 GMT</pubDate>
      <dc:creator><![CDATA[Cloud4U (Cloud4U)]]></dc:creator>
      
      <category>ретрокомпьютеры</category><category>байткод</category><category>стековая машина</category><category>однопроходный разбор</category><category>swift</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[C++29 — начало. Встреча ISO C++ в Брно]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/yandex/articles/1067348/</guid>
      <link>https://habr.com/ru/companies/yandex/articles/1067348/?utm_campaign=1067348&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/715/e1a/6f9/715e1a6f99997206a7ce65166ffe6ba5.jpeg" /><p>Привет! На&nbsp;связи Антон Полухин из&nbsp;Техплатформы Городских сервисов Яндекса. Недавно в&nbsp;Брно состоялась встреча международного комитета по&nbsp;стандартизации языка программирования C++, в&nbsp;которой я принимал активное участие. В&nbsp;этот раз началась работа над&nbsp;C++29&nbsp;и как раз о новинках и хочется рассказать.</p> <a href="https://habr.com/ru/articles/1067348/?utm_campaign=1067348&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 17 Aug 2026 07:01:31 GMT</pubDate>
      <dc:creator><![CDATA[antoshkka (Яндекс)]]></dc:creator>
      
      <category><![CDATA[undefined_behavior]]></category><category><![CDATA[undefined behaviour]]></category><category><![CDATA[tagged pointers]]></category><category><![CDATA[format]]></category><category><![CDATA[fmt]]></category><category><![CDATA[standard]]></category><category><![CDATA[standard library]]></category><category><![CDATA[thread]]></category><category><![CDATA[threads]]></category><category><![CDATA[c++29]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Думы о путях]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1068390/</guid>
      <link>https://habr.com/ru/articles/1068390/?utm_campaign=1068390&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/285/269/070/285269070962c98bc7d77fe23aaa7bc3.jpg" /><p>Что компилятор знает об окружении, когда начинает свою работу?</p><p>Из того, что он знает <em>гарантированно</em>, можно назвать только путь до бинарного файла, который послужил «пускачом». Откуда мы это знаем?</p> <a href="https://habr.com/ru/articles/1068390/?utm_campaign=1068390&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 09 Aug 2026 13:52:43 GMT</pubDate>
      <dc:creator><![CDATA[DmitrySolomennikov]]></dc:creator>
      
      <category><![CDATA[компилятор]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[В заголовке моего ELF есть точка входа. Оказалось, её никто не читает]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1068276/</guid>
      <link>https://habr.com/ru/articles/1068276/?utm_campaign=1068276&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/495/6bb/eec/4956bbeec649cd3067d8f06d7535e3f8.png" /><p>Три статьи я собирал файл и отдавал его эмулятору, ни разу в него не заглянув. Заглянул. Внутри два разных описания одних и тех же байтов, ответ на вопрос, откуда взялся адрес 0x80000000, и поле, которое я заполнял зря.</p> <a href="https://habr.com/ru/articles/1068276/?utm_campaign=1068276&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Ну, открываем!</a>]]></description>
      
      <pubDate>Sun, 09 Aug 2026 05:01:31 GMT</pubDate>
      <dc:creator><![CDATA[Pro100lamer]]></dc:creator>
      
      <category><![CDATA[RISC-V]]></category><category><![CDATA[QEMU]]></category><category><![CDATA[bare metal]]></category><category><![CDATA[ассембле]]></category><category><![CDATA[ELF]]></category><category><![CDATA[компоновщик]]></category><category><![CDATA[линкер-скрипт]]></category><category><![CDATA[точка входа]]></category><category><![CDATA[сегменты и секци]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Использую нейронку как компилятор]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1068062/</guid>
      <link>https://habr.com/ru/articles/1068062/?utm_campaign=1068062&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/ce5/f2f/566/ce5f2f566eda8b83c9cd22f4aa4c2ea5.png" /><p>Довайте соберем полный конвеер компиляции от исходного кода до готового бинарника из AI-моделей (нет, не соберем)</p> <a href="https://habr.com/ru/articles/1068062/?utm_campaign=1068062&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">соберем</a>]]></description>
      
      <pubDate>Fri, 07 Aug 2026 16:54:04 GMT</pubDate>
      <dc:creator><![CDATA[Desvor]]></dc:creator>
      
      <category><![CDATA[искусственный интеллект]]></category><category><![CDATA[ии]]></category><category><![CDATA[компиляторы]]></category><category><![CDATA[компиляция]]></category><category><![CDATA[прикол]]></category><category><![CDATA[вайб-кодинг]]></category><category><![CDATA[вайбкодинг]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Моя рекурсия зависла навсегда, и это был правильный результат]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1067662/</guid>
      <link>https://habr.com/ru/articles/1067662/?utm_campaign=1067662&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/1b5/962/5fe/1b59625fe05e7c988035b1cae6404e6f.png" /><p>Написал рекурсию тем же приёмом, что во второй статье, и программа повисла навсегда: возвращаться ей было некуда. Чиню, завожу стек и по дороге выясняю, что регистра sp в наборе команд нет вовсе. А потом урезаю стек до 128 байт, и сборка об этом не говорит ни слова.  </p> <a href="https://habr.com/ru/articles/1067662/?utm_campaign=1067662&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Ломать второй раз!</a>]]></description>
      
      <pubDate>Thu, 06 Aug 2026 19:47:09 GMT</pubDate>
      <dc:creator><![CDATA[Pro100lamer]]></dc:creator>
      
      <category><![CDATA[RISC-V]]></category><category><![CDATA[QEMU]]></category><category><![CDATA[bare metal]]></category><category><![CDATA[ассемблер]]></category><category><![CDATA[стек]]></category><category><![CDATA[рекурсия]]></category><category><![CDATA[соглашение о вызовах]]></category><category><![CDATA[переполнение стека]]></category><category><![CDATA[psABI]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Swift на Apple II. Часть 1: язык, компилятор и байткод]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/cloud4y/articles/1067592/</guid>
      <link>https://habr.com/ru/companies/cloud4y/articles/1067592/?utm_campaign=1067592&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/477/c62/ecc/477c62ecc26acd047cc404b2248f6ce0.png" /><p>Swift — язык, на котором пишут приложения для iPhone и Mac. Apple II — 8-битный компьютер 1977 года с процессором на 1 МГц, где под всю вашу программу остаётся ровно 40 704 байта. Автор оригинала соединил эти два полюса и собрал SwiftII: работающее подмножество Swift, которое компилируется в байткод и исполняется виртуальной машиной прямо на «яблочной» восьмибитке — по той же идее, по которой в 1979-м на Apple II приносили Pascal. В первой части — как устроены язык, однопроходный компилятор и байткод и на какие жертвы пришлось пойти, чтобы код всё ещё читался как Swift.</p> <a href="https://habr.com/ru/articles/1067592/?utm_campaign=1067592&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 06 Aug 2026 14:28:55 GMT</pubDate>
      <dc:creator><![CDATA[Cloud4U (Cloud4U)]]></dc:creator>
      
      <category>Ретрокомпьютеры</category><category>байткод</category><category>стековая машина</category><category>однопроходный разбор</category><category>Swift</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Компилятор, который галлюцинирует]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/selectel/articles/1066052/</guid>
      <link>https://habr.com/ru/companies/selectel/articles/1066052/?utm_campaign=1066052&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/2f7/070/7a1/2f70707a1f3bec3b12bf9ab80adcdb9f.jpg" /><p>Начнем с простого. Вы скачали нейросеть, и теперь у вас на диске лежит файл на несколько гигабайт, внутри которого миллиарды чисел. Этот файл можно запустить и он будет делать всякие осмысленные штуки: писать текст, отличать котов от собак на фотографиях, переводить с китайского. То есть перед нами работающая программа. Только исходного кода к ней нет, и никогда не было.</p><p>Дальше в статье мы разберем идею, которая из этого же наблюдения и выросла. Она звучит так: а давайте напишем компилятор, который берет понятную человеку программу и превращает ее прямо в веса нейросети.</p><p>Звучит странно. Но чтобы понять, зачем это нужно и почему это красиво, придется сначала заглянуть в обычные компиляторы и немного в азы ИИ. Без них дальше будет непонятно.</p> <a href="https://habr.com/ru/articles/1066052/?utm_campaign=1066052&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 05 Aug 2026 08:00:10 GMT</pubDate>
      <dc:creator><![CDATA[inkedsymon (Selectel)]]></dc:creator>
      
      <category><![CDATA[интерпретируемость нейросетей]]></category><category><![CDATA[RASP]]></category><category><![CDATA[Tracr]]></category><category><![CDATA[трансформеры]]></category><category><![CDATA[компиляторы]]></category><category><![CDATA[механистическая интерпретируемость]]></category><category><![CDATA[веса модели]]></category><category><![CDATA[selectel]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Программисты на Руси программируют на Си. RUSI: Концепт билингвального компилятора]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1066662/</guid>
      <link>https://habr.com/ru/articles/1066662/?utm_campaign=1066662&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/503/517/6b3/5035176b358ec560ff9efc0bc1278387.png" /><p>Это статья про разновидность языка Си с русским и оригинальным английским синтаксисом, работающими одновременно. «Если» и «if» работают как синонимы.  Это не интерпретатор. Это компилятор, который способен собрать себя сам. Это даже не транспилятор русского в английский - оба набора слов работают равноценно. Код можно посмотреть <a href="https://xn--d1alm1bt.xn--p1ai/administrator/rusi" rel="noopener noreferrer nofollow">https://кодыч.рф/administrator/rusi</a>.</p> <a href="https://habr.com/ru/articles/1066662/?utm_campaign=1066662&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Вот это поворт</a>]]></description>
      
      <pubDate>Tue, 04 Aug 2026 15:59:16 GMT</pubDate>
      <dc:creator><![CDATA[artrades]]></dc:creator>
      
      <category><![CDATA[Си]]></category><category><![CDATA[компиляторы]]></category><category><![CDATA[linux]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Создаём DSL на C#: Диагностика]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1066332/</guid>
      <link>https://habr.com/ru/articles/1066332/?utm_campaign=1066332&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/ef2/894/127/ef28941273c7ec1fb4647af7439c1471.png" /><p>Создаю собственный DSL на C#: в этой части добавим инструменты диагностики. Построим инспектор дерева компонентов, научимся изменять состояния и параметры прямо во время работы приложения, подключим метрики через System.Diagnostics и настроим #line, чтобы исключения указывали на исходный .akbura-файл, а не на сгенерированный C#.</p> <a href="https://habr.com/ru/articles/1066332/?utm_campaign=1066332&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 04 Aug 2026 05:43:55 GMT</pubDate>
      <dc:creator><![CDATA[Popou]]></dc:creator>
      
      <category><![CDATA[dsl]]></category><category><![CDATA[красно-зеленые деревья]]></category><category><![CDATA[парсеры]]></category><category><![CDATA[компиляторы]]></category><category><![CDATA[avalonia]]></category><category><![CDATA[roslyn]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[История о том, как я написал компилятор Svelte на Rust]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1065708/</guid>
      <link>https://habr.com/ru/articles/1065708/?utm_campaign=1065708&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/2b8/168/31f/2b816831fdeb9b2f04b98939384ff116.png" /><p><em>У нас тормозило всё: сборка, дев-сервер, svelte-check, LSP. Я пошёл писать свой компилятор Svelte на Rust. Пять с половиной месяцев ковырял руками и бросил. Через год вернулся с ИИ-агентом и доделал за 106 вечеров и $700.</em></p> <a href="https://habr.com/ru/articles/1065708/?utm_campaign=1065708&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Как это было</a>]]></description>
      
      <pubDate>Sun, 02 Aug 2026 08:22:35 GMT</pubDate>
      <dc:creator><![CDATA[MrWaip]]></dc:creator>
      
      <category><![CDATA[svelte]]></category><category><![CDATA[rust]]></category><category><![CDATA[компилятор]]></category><category><![CDATA[ии-агенты]]></category><category><![CDATA[claude code]]></category><category><![CDATA[oxc]]></category><category><![CDATA[vite]]></category><category><![CDATA[парсер]]></category><category><![CDATA[кодогенерация]]></category><category><![CDATA[личный опыт]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Kakehashi: запуск macOS бинарников на Linux ARM. Часть 1: рабочий 7zip, curl и успехи с Apple Git]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1065502/</guid>
      <link>https://habr.com/ru/articles/1065502/?utm_campaign=1065502&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/fce/b03/e1f/fceb03e1fd2a9d996050be110706ab9c.png" /><p>В <a href="https://habr.com/ru/articles/1061806/" rel="noopener noreferrer nofollow">прошлой статье</a> я писал о WIE -  userspace эмуляторе, который через JIT позволяет запускать PE64 бинарники на Apple Silicon. Казалось бы проект шел хорошо - почему делаешь новое? Дело в том, что я уперся в ужасную скорость - 7zip реальный проект на 200+ мб сжимал в 80-100 раз медленнее, чем нативный macOS бинарник. И это исправить без радикальной переработки проекта и разрушения самой концепции невозможно. Поэтому его разработка к сожалению была приостановлена. </p><p>Но мне хотелось попробовать сделать то, что сохранит идею переноса бинарника одной OS на другую, но без JIT. И я нашел. И имя ему Kakehashi</p> <a href="https://habr.com/ru/articles/1065502/?utm_campaign=1065502&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 01 Aug 2026 14:32:03 GMT</pubDate>
      <dc:creator><![CDATA[VladislavKalinkin]]></dc:creator>
      
      <category><![CDATA[rust]]></category><category><![CDATA[macos]]></category><category><![CDATA[linux]]></category><category><![CDATA[wine]]></category><category><![CDATA[darling]]></category><category><![CDATA[эмуляция]]></category><category><![CDATA[devops]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Доверьтесь компилятору: C++23 против трюков из 90-х]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/timeweb/articles/1061248/</guid>
      <link>https://habr.com/ru/companies/timeweb/articles/1061248/?utm_campaign=1061248&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/74e/9f4/d46/74e9f4d4603c2e39f91573e2edcda52f.jpg" /><p>Как часто вы слышали: «Не доверяй компилятору, пиши вручную»? Похоже, эту идеологию пора сдавать в архив.</p><p>Автор специально собрал примеры, в которых «умный» код современного C++ либо проигрывает наивному, либо не даёт выигрыша, но при этом ухудшает читаемость и мешает оптимизатору. Тут и легендарный <code>Q_rsqrt</code>, и бит-хаки для подсчёта единичек, и вездесущие <code>const&amp;</code>, и даже опасные фокусы с фильтрацией диапазонов. Всё с воспроизводимыми бенчмарками на Clang 21 и Ryzen 9. Если вы готовы пересмотреть багаж старых привычек – просим под кат.</p> <a href="https://habr.com/ru/articles/1061248/?utm_campaign=1061248&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 27 Jul 2026 13:30:38 GMT</pubDate>
      <dc:creator><![CDATA[ZheleznyChel (Timeweb Cloud)]]></dc:creator>
      
      <category>C++</category><category>C++20</category><category>C++23</category><category>LLVM</category><category>GCC</category><category>SIMD</category><category>SSE</category><category>ARM</category><category>timeweb_статьи_перевод</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Hot Reload, который не заработал. Инкрементальная компиляция в браузере своими руками]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1063040/</guid>
      <link>https://habr.com/ru/articles/1063040/?utm_campaign=1063040&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/fc4/396/247/fc4396247387e9dce9b1b2d5661076e4.png" /><p><a href="https://habr.com/ru/articles/949054/" rel="noopener noreferrer nofollow">В прошлой статье</a> я рассказывал, как мы делаем онлайн IDE для .NET — дизайн, компиляция и запуск приложений происходят прямо в браузере, без сервера. Проект живёт по адресу <a href="http://xaml.io" rel="noopener noreferrer nofollow">xaml.io</a>. С тех пор мы много чего добавили, и в какой-то момент у нас стало получаться загружать в IDE довольно крупные .NET проекты — десятки XAML, сотни C# файлов, несколько референсных проектов и пакетов NuGet.</p><p>Одна из главных возможностей — это визуальный UI-дизайнер пользовательских приложений. И у него есть особенность: чтобы дизайнер вообще что-то показывал, приложение должно быть скомпилировано, причём в актуальном состоянии. Не «когда-нибудь», а после каждой правки.</p><p>Открыли как-то в IDE один реальный проект (FamilyShow — классическое демонстрационное WPF-приложение), поправили одну строку в <code>.cs</code> и <strong>84 секунды</strong> наблюдали за анимацией прогресса. С таким UX никакой интерактивный дизайн невозможен.</p><p>Сейчас та же правка занимает 5 секунд, а правка XAML-разметки на типичной странице — меньше секунды. В этой статье — как мы к этому пришли, и какие сюрпризы нам приготовили по дороге Roslyn, OpenSilver, WASM и наш собственный код.</p> <a href="https://habr.com/ru/articles/1063040/?utm_campaign=1063040&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 27 Jul 2026 04:49:00 GMT</pubDate>
      <dc:creator><![CDATA[JacobL]]></dc:creator>
      
      <category><![CDATA[opensilver]]></category><category><![CDATA[wasm]]></category><category><![CDATA[c#]]></category><category><![CDATA[.net]]></category><category><![CDATA[wpf]]></category><category><![CDATA[ide]]></category><category><![CDATA[web]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Проектирование меню в стесненных условиях]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1063030/</guid>
      <link>https://habr.com/ru/articles/1063030/?utm_campaign=1063030&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/401/977/49a/40197749a94c93ebbfb25afa436e36de.jpg" /><p>В моей практике пришлось разрабатывать программную часть измерительных приборов, источников тока,&nbsp; испытательных установок, автономных, не связанных с компьютером. Меню как помощник и путеводитель пользователя было необходимо. Хочу поделиться опытом разработки своей библиотеки</p> <a href="https://habr.com/ru/articles/1063030/?utm_campaign=1063030&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 26 Jul 2026 01:14:11 GMT</pubDate>
      <dc:creator><![CDATA[sansan57]]></dc:creator>
      
      <category><![CDATA[программирование]]></category><category><![CDATA[разработка приложений]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[О разработке прототипа эмулятора WIE: запуск Windows PE64 бинарников на Apple Silicon]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1061806/</guid>
      <link>https://habr.com/ru/articles/1061806/?utm_campaign=1061806&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/6df/2fd/3b5/6df2fd3b5e6cae21f09de0f7ed75959d.png" /><p><strong>WIE </strong>— это исследовательский эмулятор пользовательского режима (userspace) для запуска 64-битных Windows-приложений (PE64) на архитектуре macOS Apple Silicon. Проект написан на Rust 1.97, а в качестве бэкенда компиляции используется Cranelift для трансляции x86-64 инструкций на лету в нативный ARM64. </p> <a href="https://habr.com/ru/articles/1061806/?utm_campaign=1061806&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 22 Jul 2026 10:45:00 GMT</pubDate>
      <dc:creator><![CDATA[VladislavKalinkin]]></dc:creator>
      
      <category><![CDATA[pet-проект]]></category><category><![CDATA[jit]]></category><category><![CDATA[apple silicon]]></category><category><![CDATA[macos]]></category><category><![CDATA[wine]]></category><category><![CDATA[winapi]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Компилятор в 16 лет]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1060738/</guid>
      <link>https://habr.com/ru/articles/1060738/?utm_campaign=1060738&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Меня зовут Самир, мне 16 и я хотел бы поделиться с вами одним из моих текущих проектов: <strong>Veo</strong> (https://github.com/SamirShef/veolang). Veo это системный язык программирования. Я хочу использовать его для написания своих программ в будущем. А ещё я разрабатываю его потому что мне интересны комплияторы и потому что мне нечего делать.</p><p>Я больше года занимаюсь компиляторострением.</p> <a href="https://habr.com/ru/articles/1060738/?utm_campaign=1060738&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 20 Jul 2026 05:44:56 GMT</pubDate>
      <dc:creator><![CDATA[SamirShef]]></dc:creator>
      
      <category><![CDATA[c++]]></category><category><![CDATA[c++20]]></category><category><![CDATA[компиляторы]]></category><category><![CDATA[компиляция]]></category><category><![CDATA[язык программирования]]></category><category><![CDATA[языки программирования]]></category><category><![CDATA[программирование]]></category><category><![CDATA[системное программирование]]></category><category><![CDATA[системщик]]></category><category><![CDATA[разработка языков программирования]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
