home.social

#компиляция — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #компиляция, aggregated by home.social.

fetched live
  1. Использую нейронку как компилятор

    Довайте соберем полный конвеер компиляции от исходного кода до готового бинарника из AI-моделей (нет, не соберем) соберем

    habr.com/ru/articles/1068062/

    #искусственный_интеллект #ии #компиляторы #компиляция #прикол #вайбкодинг #вайбкодинг

  2. На дворе C++23, а заставить компилятор проверять код всё ещё помогает только ассемблер

    Казалось бы, современный C++ дает нам море инструментов для контроля кода на этапе компиляции: static_assert , концепты, constexpr всё, что только можно. Но что делать, если вам нужно заставить разработчика вызвать обязательную функцию инициализации инфраструктуры тестирования для библиотечных классов , а проект собирается под ARM с агрессивным -O2 -Os -flto=auto в недрах Yocto/OpenBMC? В этой статье я расскажу, как попытка добавить удобный режим тестирования для датчиков которые используют header-only библиотеку столкнулась с невероятно умным оптимизатором GCC 14.2, и почему в эпоху мегабайтных исходников нам всё ещё приходится спускаться на уровень инлайн-ассемблера, чтобы просто заставить линкер выдать ошибку для не корректного кода (для определения правила использования хидера).

    habr.com/ru/articles/1058316/

    #linker #c++20 #c++23 #с++ #компиляция #статическая_типизация

  3. Компилятор в 16 лет

    Меня зовут Самир, мне 16 и я хотел бы поделиться с вами одним из моих текущих проектов: Veo (github.com/SamirShef/veolang). Veo это системный язык программирования. Я хочу использовать его для написания своих программ в будущем. А ещё я разрабатываю его потому что мне интересны комплияторы и потому что мне нечего делать. Я больше года занимаюсь компиляторострением.

    habr.com/ru/articles/1060738/

    #c++ #c++20 #компиляторы #компиляция #язык_программирования #языки_программирования #программирование #системное_программирование #системщик #разработка_языков_программирования

  4. WebAssembly (WASM) — не серебряная пуля

    WebAssembly появился для браузерных задач как способ исполнять тяжелый код быстрее, чем это делает JavaScript. Но за последние годы он начал выходить далеко (иногда буквально далеко ) за пределы вкладки браузера: серверы, edge-вычисления, плагины, песочницы. Появились рантаймы Wasmtime, WasmEdge, Wasmer, которые исполняют WASM-модули\компоненты прямо на ОС. Звучит красиво - собрал один бинарь, а запускаешь где угодно, да еще и в максимальной изоляции. Но есть интересное наблюдение. Существуют проекты, которые строили свои виртуальные машины на WASM, но отказались от него. Самый заметный пример - это Polkadot . Они спроектировали собственную PolkaVM на базе набора инструкций RISC-V и переключили исполнительный слой смарт-контрактов на нее (при этом сам runtime Polkadot по-прежнему компилируется в WASM). Если WASM настолько хорош, как заявляется, то почему для нового движка выбрали не его, а регистровую машину? Недавно в одном из тематических чатов разгорелась жаркая дискуссия на этот счет, что, собственно говоря, и побудило меня на написание этой статьи. Если тебе интересны такие темы - добро пожаловать к нам) Давайте попробуем разобраться, чем стековая модель отличается от регистровой и где эта разница реально что-то меняет. А также рассмотрим, где же в WASM скрыты компромиссы.

    habr.com/ru/articles/1058984/

    #wasm #webassembly #wasi #component_model #компиляция #компиляторы #регистры #lua #стек #виртуальная_машина

  5. Как мы ускорили расчёт факторов ранжирования в поиске Ozon с помощью динамической компиляции

    Всем привет! Меня зовут Петя Портнов, я работаю в Ozon ведущим разработчиком в команде среднего поиска — слоя, который ранжирует поисковую выдачу. Представьте, что вы вводите запрос в поисковую строку маркетплейса. За этим простым действием скрывается сложный поисковый пайплайн: миллионы товаров фильтруются, ранжируются и сортируются по релевантности. Но как именно система решает, что показать первым? В основе этого решения лежат вычисления, среди которых — сотни разнообразных формул, учитывающих цену, рейтинг, популярность, персонализацию и другие факторы. По мере развития системы таких формул становится всё больше, а сами они усложняются. В какой-то момент вычисления превращаются в узкое место: начинают потреблять значительную долю CPU, создают множество промежуточных объектов — и так для каждого поискового запроса. Возникает вопрос: как снизить стоимость таких вычислений в JVM? В этой статье я расскажу, что сделали мы, чтобы снизить нагрузку на систему: как заменили интерпретирующий движок формул на динамический компилятор, выполняющий построение эффективного байт-кода, отлично векторизующегося JIT-компилятором. Это текстовая версия доклада с Joker 2025 с дополнениями, которые не вошли в выступление или появились в проекте уже после конференции.

    habr.com/ru/companies/ozontech

    #java #поиск #оптимизация_производительности #компиляция #байткод #jvm #ozon_tech

  6. Как мы ускорили расчёт факторов ранжирования в поиске Ozon с помощью динамической компиляции Всем привет! Ме...

    #java #поиск #оптимизация #производительности #компиляция #байткод #jvm #ozon #tech

    Origin | Interest | Match
  7. [Перевод] Шесть мыслей о генерации кода на C

    Я занимаюсь разработкой компиляторов, то есть, пишу программы, преобразующие программы в программы. Иногда требуется нацелиться на более высокоуровневый язык, чем, скажем, простой ассемблер, и зачастую именно в таком качестве удобно взять язык C. Генерировать C не так страшно как писать от руки — в частности, потому, что генератор умеет не попадать в ловушки, связанные с неопределённым поведением. А когда пишешь на C вручную, именно неопределённого поведения следует особенно остерегаться. Здесь я опишу некоторые паттерны, которые обнаружил сам, и которые помогают мне результативно работать. Считайте этот пост краткой подборкой тех вещей, которые мне действительно помогают. Рискуя, что меня могут обвинить в тщеславии, назову их «наилучшими практиками», хотя, это действительно мои рабочие практики, поэтому, если они вам понравятся — смело берите их на вооружение.

    habr.com/ru/articles/1001304/

    #программирование #C #rust #переменные #компиляция

  8. Я добавил трейты и указатели в свой язык

    Язык активно улучшается, осталось недолго до bootstrapping'а! Также уменя есть планы писать LSP и загрузить язык на github linguist. Для последнего нужны репозитории (>200). Для тех, кому нечего делать, или кому просто не лень, попробуйте пописать программки на моем языке. Пока мало что можно будет написать, но, думаю, хотя бы что-то можно.

    habr.com/ru/articles/996654/

    #llvm #llvm_ir #llvm_компилятор_llvm_ir #компиляторы #компилятор #компиляция #c++ #язык_программирования #языки_программирования #как_написать_свой_язык

  9. Универсальный компилятор для FPGA, который понимает 42 языка программирования

    Универсальный компилятор для FPGA, который понимает 42 языка программирования Пишите код на любимом языке — получайте работающий Verilog для FPGA. Бесплатно, без vendor lock-in.

    habr.com/ru/articles/989020/

    #компиляторы #компиляция #компилятор #компилятор_оптимизация #компиляция_модулей #компилятор_си #компилятор_c #компилятор_сам_соптимизирует #компиляция_в_c #компиляторы_кода

  10. Kawai-Focus 2.1: переезд на новый стек

    В данной статье я попытаюсь переписать часть приложения Kawai-Focus на стек: FastAPI + Vue.js + Tauri + Ionic . Также я соберу приложение только с экраном «Таймеры» под Linux в AppImage, которое подойдёт для большинства Linux-дистрибутивов. Реализация одного экрана не будет слишком долгим процессом, а финальная сборка приложения позволит оценить сложность и удобство полного цикла разработки. Эта cтатья не будет подробным гайдом, так как размер переписанного кода и его описание слишком велики для одной статьи. Однако я покажу часть кода проекта и расскажу о выбранном стеке, а также о трудностях и преимуществах, с которыми я столкнулся в процессе переписывания проекта. Я буду использовать часть кода старого проекта, который не касается Kivy и KivyMD, поэтому его душа не умрёт, а обновится. Заваривайте чай, доставайте вкусняшки — пора «старый стек превращать в удобрение для новых помидор»! 🍅

    habr.com/ru/articles/983652/

    #python3 #tauri #vuejs #nuitka #ionic #appimage #компиляция #linux

  11. Kawai-Focus 2.1: переезд на новый стек В данной статье я попытаюсь переписать часть приложения Kawai-Focus на стек: FastAPI +...

    #python3 #tauri #vue.js #nuitka #ionic #appimage #компиляция #linux

    Origin | Interest | Match
  12. Компиляторы, AI-ассистенты и вызов IOCTL: доклады о С++ и Linux вместо новогоднего кино

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

    habr.com/ru/companies/yadro/ar

    #митап #с++ #linux #linux_kernel #ядро_linux #доверенная_среда #компиляция #компиляторы

  13. Компиляторы, AI-ассистенты и вызов IOCTL: доклады о С++ и Linux вместо новогоднего кино Представьте, что вам не нужн...

    #митап #с++ #linux #linux #kernel #ядро #linux #доверенная #среда #компиляция #компиляторы

    Origin | Interest | Match
  14. Два режима SPEC: разгоняемся на Peak, притормаживаем на Base

    Привет, Хабр! Все мы любим быстрые программы и высокие показатели в бенчмарках. Когда гоняешь тесты производительности, так и тянет включить все оптимизации компилятора, чтобы выжать максимум. Но если вы имели дело с пакетами тестов SPEC (например, SPEC CPU), то, вероятно, замечали, результаты там делятся на две категории Base и Peak . В тестах SPEC CPU есть концепция базового прогона (base run) и пикового (peak run). Это строго определенные режимы с разными правилами оптимизации. Base про честность и сопоставимость, Peak про максимальную производительность любой ценой (ну, почти любой). Смотреть детали

    habr.com/ru/companies/otus/art

    #linux #бенчмарки #оптимизация #производительность #компиляция #нагрузка #измерение_скорости #инженерные_практики

  15. SFINAE в C++

    Привет, Хабр! Сегодня я хочу поговорить про SFINAE, загадочную аббревиатуру из C++. Расшифровывается SFINAE не менее загадочно: Substitution Failure Is Not An Error , по-русски: «неудавшаяся подстановка — не ошибка». Сейчас рассмотрим, почему это правило появилось, как оно работает и как мы можем использовать его себе во благо. К механике SFINAE

    habr.com/ru/companies/otus/art

    #C++ #шаблонная_метапрограммирование #шаблоны #SFINAE #перегрузка_функций #типы_в_C++ #метапрограммирование #компиляция

  16. [Перевод] Помогите, мой Java-объект исчез (и GC тут ни при чём)

    Команда Spring АйО подготовила перевод разбора реального бага в HotSpot от разработчика OpenJDK. Во время работы над Project Valhalla его Java-объекты и классы начали «исчезать» без участия сборщика мусора — и поиск причины привёл к одному неверному биту в заголовке объекта, miscompilation в C2 и очень нетривиальному отладочному квесту. Этот текст показывает, как устроены mark word и Compact Object Headers, чем живёт Valhalla и как системное мышление плюс флаги JVM помогают выловить самые коварные ошибки.

    habr.com/ru/companies/spring_a

    #java #hotspot #jvm #jit #компиляция #отладка

  17. Progress Bar для Сборки Программы

    Компиляцию большой программы можно сравнить с кипячением воды. Вы никогда не можете сказать сколько еще осталось времени до окончания процесса. Многим пользователям GUI-IDE приходится страдать от того, что запустив сборку проекта приходится ждать окончания непредсказуемое время. Однако эту проблему можно решить, если собирать код скриптами сборки. Достоинством сборки проекта из самостоятельно написанных скриптов является то, что в процесс сборки можно добавлять всяческие полезные механизмы. Вы программируете не только свою прошивку, но и процесс сборки самой прошивки. Здорово? В этом тексте я написал про то, как добавить индикатор прогресса в процесс сборки прошивки.

    habr.com/ru/articles/966248/

    #make #gnu_make #progressbar #progress_bar #Makefile #devops #переменные_окружения #компиляция #скрипты_сборки #build_system

  18. Как работает компьютер. Простая статья для начинающих программистов

    В этой статье изложено всё, что нужно знать об устройстве компьютера с точки зрения программиста, а именно: для чего нужен тактовый генератор, регистры, кэши и виртуальная память; что такое архитектура процессора; что такое машинный код и код ассемблера; чем отличается компиляция в машинный код в C, C++ или Rust от компиляции в байт-код виртуальной машины в языках типа Java и C#; в чём их отличие от интерпретируемых языков вроде JavaScript или Python; что такое динамические и статические библиотеки (.dll/.so, .lib/.a); что такое фреймворк; что такое API и web-API; и что собой представляет параллельное программирование с использованием многоядерных процессоров, векторных регистров и видеокарт.

    habr.com/ru/articles/964572/

    #процессор #кэш #регистр #виртуальная_память #компиляция #интерпретаторы #параллелизм #gpu #векторные_операции #api

  19. [Перевод] Кому нужен Graphviz, если можно написать его самому?

    Недавно мы переделали наши внутренние инструменты, визуализирующие компиляцию JavaScript и WebAssembly. При работе оптимизирующего компилятора Ion мы теперь можем генерировать интерактивные графы, демонстрирующие, как конкретно обрабатываются и оптимизируются функции. Вы можете сами поэкспериментировать с этими графами в оригинале статьи . Просто введите какой-нибудь код на JavaScript в функцию test , и наблюдайте за созданием графа. Также там можно щёлкать и перетаскивать граф, менять масштаб при помощи колеса мыши с зажатым Ctrl и перетаскивать ползунок вниз, чтобы изучить процесс оптимизации. В процессе экспериментов обратите внимание на то, насколько стабильна схема графа даже при изменении размеров блоков и добавлении новых структур. Попробуйте нажать на заголовок блока, чтобы выделить его, а затем перетащить ползунок, и наблюдайте за тем, как меняется граф, а блок остаётся на месте. Или нажмите на номер команды, чтобы подсветить её и следить за ней между проходами. Разумеется, мы не первые, кто начал визуализировать внутренние графы компиляторов, и не первые, кто сделал их интерактивными. Но меня не устраивали результаты работы популярных инструментов наподобие Graphviz и Mermaid , поэтому я решил создать алгоритм специально под наши потребности. Получившийся алгоритм прост, быстр, создаёт на удивление высококачественный вывод и его можно реализовать в менее чем тысяче строк кода. В этой статье я объясню алгоритм и конструкторские решения, лежащие в его основе.

    habr.com/ru/articles/962436/

    #spidermonkey #графы #графы_визуализация #компиляция

  20. [Перевод] Кому нужен Graphviz, если можно написать его самому? Недавно мы переделали наши внутренние инструмент...

    #spidermonkey #графы #графы #визуализация #компиляция

    Origin | Interest | Match
  21. Ассемблер: рассматриваем каждый байт «Hello, World!». Как на самом деле работают программы на уровне процессора и ОС

    Что на самом деле происходит, когда вы запускаете программу? Мы привыкли воспринимать это как данность, но за кадром скрывается целая вселенная — от регистров процессора и системных вызовов Linux до формата ELF и модели памяти процесса. Присоединяйтесь к погружению, где мы прольём свет на каждый байт программы «Hello, World!» и поймём, каким образом ОС её выполняет.

    habr.com/ru/companies/timeweb/

    #linux #системный_вызов #ассемблер #виртуальная_память #компиляция #elf #библиотеки #си #низкоуровневое_программирование #timeweb_статьи

  22. Ассемблер: рассматриваем каждый байт «Hello, World!». Как на самом деле работают программы на уровне процессора и...

    #linux #системный #вызов #ассемблер #виртуальная #память #компиляция #elf #библиотеки #си #низкоуровневое

    Origin | Interest | Match
  23. Ассемблер: Рассматриваем каждый байт «Hello, World!». Как на самом деле работают программы на уровне процессора и ОС

    Что на самом деле происходит, когда вы запускаете программу? Мы привыкли воспринимать это как данность, но за кадром скрывается целая вселенная — от регистров процессора и системных вызовов Linux до формата ELF и модели памяти процесса. Присоединяйтесь к погружению, где мы прольём свет на каждый байт программы «Hello, World!» и поймём, каким образом ОС её выполняет.

    habr.com/ru/companies/timeweb/

    #linux #системный_вызов #ассемблер #линковка #виртуальная_память #компиляция #elf #библиотеки #си #низкоуровневое

  24. Девиртуализация в C++, компиляторах и вашей программе

    Привет, Хабр! Меня зовут Илья Андреев, я старший программист в компании Syntacore. Вы, наверно, слышали, что виртуальные функции в C++ пользуются дурной славой — а может, и сами придерживаетесь о них не самого лучшего мнения. В этой статье, подготовленной совместно с Константином Владимировым, я в некоторой степени выступлю адвокатом виртуализации. Мы начнем с вводной части о статическом и динамическом полиморфизме, рассмотрим факторы, влияющие на девиртуализацию, и ее примеры разной сложности — в том числе те, что мы используем в реальной разработке. А напоследок познакомим вас со спекулятивной девиртуализацией и дадим рекомендации, как подходить к виртуальным функциям в разработке на C++.

    habr.com/ru/companies/yadro/ar

    #с++ #виртуализация #девиртуализация #std #компиляторы #компиляция

  25. Архитектура сна программиста: как мозг компилирует дневной опыт ночью

    Почему мы ложимся спать с багами в голове, а просыпаемся с готовым решением? Сон программиста — это не просто отдых, а своеобразная ночная компиляция опыта, где нейроны оптимизируют код нашей памяти, удаляют мусорные зависимости и иногда даже проводят рефакторинг идей. Попробуем разобраться в архитектуре этого процесса — через аналогии с компиляторами, кешами и garbage collector’ами.

    habr.com/ru/articles/937944/

    #сон #мозг #программист #компиляция #память #garbage_collector #REM #оптимизация #нейронаука #код

  26. [Перевод] Собери Svelte 5 в своей голове

    Даже если вы никогда не заглядывали «под капот» фреймворков, Svelte 5 — отличный повод это сделать. Вместо сухих теорий мы шаг за шагом разберём, как привычный HTML-подобный код Svelte превращается в быстрый JavaScript, способный работать без лишнего балласта. Автор статьи, Тан Ли Хау из сообщества Svelte, показывает этот процесс на простых примерах, так что вы сможете буквально «скомпилировать» Svelte у себя в голове и понять, что на самом деле делает ваш код.

    habr.com/ru/companies/first/ar

    #svelte #реактивность #javascript #программирование #компиляция #фреймфорк #framework #react

  27. Как собрать npm-пакет в 2025 и не облажаться

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

    habr.com/ru/articles/936010/

    #opensourсe #npm #javascript #бандлер #typescript #компиляция

  28. [Перевод] «Почему компилятор Rust такой медленный?»

    Я потратил месяц на создание веб-сайта в Docker и теперь готов поделиться ужасными историями. У меня есть проблема. Мой веб-сайт (на котором была опубликована эта статья) в основном обслуживается одним двоичным файлом Rust. Он стал слишком длинным . Каждый раз, когда мне нужно внести изменение, я должен: Собрать новую статически компонуемую библиотеку (с --target=x86_64-unknown-linux-musl ) 1. Скопировать её на сервер 2. Перезапустить веб-сайт Ситуация, мягко говоря, неидеальная. Поэтому мне бы хотелось перейти к развёртыванию веб-сайта при помощи контейнеров (будь то Docker, Kubernetes или что-то иное), в духе подавляющего большинства ПО, разворачиваемого в последний десяток лет. Единственная проблема заключается в том, что реализовать быстрые сборки Rust с Docker не так уж просто.

    habr.com/ru/articles/922534/

    #docker #профилирование #трассировка #компиляция #rustc

  29. [Перевод] «Почему компилятор Rust такой медленный?» Я потратил месяц на создание веб-сайта в Docker и теперь гото...

    #docker #профилирование #трассировка #компиляция #rustc

    Origin | Interest | Match
  30. Концепты в современном C ++

    C++ шаблоны — мощный инструмент, но работать с ними бывает больно: многословные ошибки, путаница с типами и enable_if, который все усложняет. Concepts в C++20 появились, чтобы упростить жизнь разработчикам и сделать шаблонный код понятнее. В этой статье — разбор конкретного кейса: как с помощью концептов задать корректные ограничения на контейнеры, избежать ловушек с массивами и получить внятные ошибки от компилятора.

    habr.com/ru/articles/896954/

    #c++ #разработка #концепты #контейнеры #сигнатуры #компиляция

  31. Шаг 1: Lexing

    Относительно других этапов компиляции, лексический анализ – самый простой, хотя и может показаться сложным на первый взгляд, поэтому эта статья будет самой короткой из серии. Если интересно разобраться – вперёд читать!

    habr.com/ru/articles/890344/

    #компиляторы #компиляция #лексический_анализ #лексический_анализатор

  32. Путь от Кода до Бинарного Файла

    Как же исходный код превращается в бинарный файл, который потом исполняется на компьютере? Не нашёл ни одной статьи, которая описывала бы полный процесс от начала до конца, поэтому я написал данный материал.

    habr.com/ru/articles/888254/

    #компиляторы #компиляция #ассемблер #x8664 #assembly

  33. Разбираем iOS-приложение: код, сборка, статические и динамические библиотеки, компиляция, запуск

    Больше всего мне нравится изучать процессы мобильной разработки, включая самые низкоуровневые вещи. Из чего состоит iOS-приложение? Какие этапы оно проходит перед тем, как оказаться на устройстве пользователя? Что такое Executable binary? Что происходит внутри препроцессора? Если вам, как и мне, интересно разбираться в Computer Science для iOS, приглашаю под кат. Разберём первые, самые базовые понятия, которые касаются любого iOS-приложения. Статья поможет тем, кто хочет двигаться дальше, кому интересен IT мир, и кто по каким-то причинам ещё не приступил к изучению подобного материала.

    habr.com/ru/companies/alfa/art

    #ios #запуск_приложения #компиляция #динамические_библиотеки #статические_библиотеки #фреймворки #Executable_binary #сборка_приложений

  34. Компиляция математического выражение из строки динамически во время выполнения в C# (.NET)

    В этой статье я продемонстрирую, как динамически компилировать математические выражения из строк в runtime в C#, исключительно просто и быстро. Это решение поддерживает различные математические контексты, включая логические выражения, научные вычисления и C#, а также позволяет расширять эти контексты пользовательскими переменными, операторами и функциями.

    habr.com/ru/articles/842046/

    #математика #net #net_core #c# #c#net #algorithms #eval #math #mathematics #компиляция

  35. Как компилировать json или история оптимизации python сервиса

    В прошлой статье мы начали историю создания одного из компонентов платформы экспериментов в компании Okko — сервис сплитования трафика. Там были описаны небольшие, но эффективные оптимизации Python-кода, которые могут быть полезны в практически любом сервисе на этом языке. В статье мы продолжим рассказ об оптимизациях и улучшениях, однако здесь речь пойдет про детальные и последовательные изменения в самом узком месте сервиса. Приготовьтесь к более высокому уровню Python-магии.

    habr.com/ru/companies/okko/art

    #python #оптимизация #компиляция #компиляция_в_c #вебразработа #json

  36. Как пересобрать ядро для WSL2 и остаться в живых

    Мы активно пользуемся WSL2 для того, чтобы открывать линуксовые коры в Visual Studio. Для обеспечения консистентности символов и коры мы монтируем squashfs образ, созданный в целевой системе. После очередного апдейта целевого дистрибутива, у нас всё сломалось - squash монтировался, но мог посередине файла выдать ошибку чтения, записав в dmesg что-то типа SQUASHFS error: xz decompression failed

    habr.com/ru/articles/819819/

    #wsl2 #linux #squashfs #xz #компиляция

Share on Mastodon

Enter the server where you have an account.