Что происходит после fn main() в Rust?

Привет! Хочу вместе с вами разобрать, как же код на Rust превращается в готовый исполняемый файл . Мы пишем программу, например, fn main() { println!("Hello, Habr!"); } , компилируем, и на выходе получаем бинарник. Что происходит под капотом компилятора Rust в этот момент? Давайте аккуратненько заглянем внутрь этого таинственного процесса.

https://habr.com/ru/companies/beget/articles/972248/

#rust #cargo #llvm #компилятор

Что происходит после fn main() в Rust?

Привет! Хочу вместе с вами разобрать, как же код на Rust превращается в готовый исполняемый файл . Мы пишем программу, например, fn main() { println!("Hello, Habr!"); } , компилируем, и на выходе...

Хабр

[Перевод] Компилируем Python так, чтобы он работал везде

Это история о том, как написать компилятор Python, генерирующий оптимизированные ядра и при этом позволяющий сохранить простоту кода.

https://habr.com/ru/articles/971490/

#компилятор #pytorch #компьютерное_зрение #оптимизация #обработка_изображений

Компилируем Python так, чтобы он работал везде

Это история о том, как написать компилятор Python, генерирующий оптимизированные ядра и при этом позволяющий сохранить простоту кода. Предисловие Наши читатели традиционно интересуются, как и что...

Хабр

[Перевод] Fil-C: реализация C с безопасной работой с памятью

В последние годы язык Rust активно продвигается в качестве инструмента для системного программирования. Самый яркий символ этого процесса - официальное добавление Rust в исходный код ядра Linux, одного из ранее неприступных бастионов языка C. Это событие встряхнуло сообщество разработчиков на C, где десятилетиями царила уверенность: «да, C небезопасен, но так всегда было и всегда будет». Но то, что десятилетиями казалось незыблемым, теперь вызывает вопросы. Возможно ли, чтобы сам C стал безопасным, не меняясь ? Проект Fil-C - одна из самых необычных и смелых попыток ответить «да».

https://habr.com/ru/articles/970320/

#безопасность_памяти #компилятор

Fil-C: реализация C с безопасной работой с памятью

Fil-C - это безопасная с точки зрения работы с памятью реализация C и C++ , цель которой - позволить коду на C - включая арифметику указателей, объединения и другие возможности, часто приводящие к...

Хабр

Препроцессоры на Go: нарушение границ или сила -toolexec

Мы в Смартомато — супер продуктовые ребята. Со временем у нас скопились недовольство по поводу работы с Golang, захотелось залезть в технические дебри. Произошла гиперкомпенсация и мы придумали препроцессинг в Go. Да, несмотря на то, что этот язык официально не поддерживает препроцессоры — мы всё равно сделали. А сейчас делимся результатами этой работы с вами. Эта статья по мотивам моего доклада на Golang Conf X 2025 о болях шаблонного кода и вариантах их решения с помощью препроцессинга на базе стандартного тулчейна Go. В тексте не будет сравнения с препроцессорами в других языках и морально-этической оценки решения.

https://habr.com/ru/companies/oleg-bunin/articles/958946/

#go #golang #golangconf #open_telemetry #разработка #программирование #компилятор #toolexec #open_source #github

Препроцессоры на Go: нарушение границ или сила -toolexec

Мы в Смартомато — супер продуктовые ребята. Со временем у нас скопились недовольство по поводу работы с Golang, захотелось залезть в технические дебри. Произошла гиперкомпенсация и мы придумали...

Хабр

Java 25: упрощённые исходники

Язык Java развивается. Не так давно вышла очередная версия, в которой, помимо всего прочего , вышло любопытное обновление языка ( JEP-512 ). Изменения, в язык внесенные, делают его более пригодным и удобным для обучения и написания коротких программ. В этой статье хочу рассказать о том, как это сделано. Для этого заглянем в компилятор и немного коснемся теории создания языков.

https://habr.com/ru/companies/axiomjdk/articles/952826/

#java #axiomjdk #компилятор #axiom_jdk #jdk25 #jep #java_25 #lts

Java 25: упрощённые исходники

Язык Java развивается. Не так давно вышла очередная версия, в которой, помимо всего прочего , о чем наша команда уже рассказала, вышло любопытное обновление языка ( JEP-512 ). Теперь...

Хабр

Как устроена память внутри микропроцессора и при чем тут компиляторы

Помните, как в школе, решая примеры «в столбик», мы бормотали себе под нос: «один пишем, два в уме»? У процессора при вычислениях возникает похожая ситуация — где-то нужно хранить промежуточные результаты. В современных микропроцессорах работает множество различных блоков, обрабатывающих числа, — их называют исполнительными устройствами. Чтобы все они могли временно «складывать» свои «два в уме», требуется достаточно большой объем быстрой вспомогательной памяти. В статье мы разберемся, как устроены запоминающие ячейки внутри процессора, почему из них строят массивы памяти и какие задачи решают компиляторы — от оптимизации по скорости, площади и энергопотреблению до генерации файлов для САПР.

https://habr.com/ru/companies/yadro/articles/943494/

#микроэлектроника #процессоры #dтриггер #компилятор

Как устроена память внутри микропроцессора и при чем тут компиляторы

Помните, как в школе, решая примеры «в столбик», мы бормотали себе под нос: «один пишем, два в уме»? У процессора при вычислениях возникает похожая ситуация — где-то нужно хранить промежуточные...

Хабр

Мое видение универсального языка программирования

Язык программирования, даже общего назначения, - это инструмент. Каждый язык хорош в решении задач своей сферы: C++ позволяет писать эффективные программы, Haskell - писать элегантный параллельный и математический код, C# - создавать программы на гибкой масштабируемой архитектуре. Современные языки заставляют нас мириться с их недостатками: отсутствие нужной системы типов, нехватка синтаксического сахара, отсутствие парадигмы X. Все хоть раз мечтали о языке, который удобен для решения любой задачи. Я расскажу о своих идеях по созданию универсального языка программирования. Плавно перейдем к идее языка-конструктора. Вас ждет погружение в модульную архитетуру, лямбда-исчисления, байткод, расширяемое программирование

https://habr.com/ru/articles/942134/

#универсальный #язык_программирования #компилятор #архитектура #dsl #модульность #парадигмы_программирования #байткод #llvm

Мое видение универсального языка программирования

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

Хабр

Тёмные закоулки Kotlin Contracts и скрытые пасхалки

Контракты в Kotlin — это «тёмная лошадка» языка — они загадочные и чуть-чуть магические. Но что, если я скажу, что под капотом у них спрятано гораздо больше, чем можно найти в официальной документации? Привет! Меня зовут Виталий. Я работаю Android‑разработчиком в Альфа‑Банке, в этой статье я делюсь пасхалками и неожиданными фичами Kotlin компилятора, связанными с Kotlin Contracts. Всё просто, лампово и с примерами из исходников. Даже если вы никогда не ковырялись в кишках компилятора, гарантирую: после прочтения контракты станут чуть ближе, а компилятор — чуть менее пугающим.

https://habr.com/ru/companies/alfa/articles/917998/

#kotlin #компилятор #compile #compiler #contracts #контракты

Тёмные закоулки Kotlin Contracts и скрытые пасхалки

Привет! Меня зовут Виталий. Я работаю Android‑разработчиком в Альфа‑Банке. В этой статье предлагаю вместе прогуляться по тёмным закоулкам Kotlin Contracts и раскопать парочку пасхалок....

Хабр

И как оно? Рассказываем как прошёл второй Java Rock Stars Meetup

Привет, Хабр! Первый Java Rock Stars Meetup прошёл на ура (обзор первого митапа см. тут ) и вы сказали, что хотели бы ещё. Ну, что ж, мы услышали, приняли и сделали. В конце мая мы провели второй Java Rock Star Meetup в Москве на той же площадке Casa Picassa, только в соседнем лофте. В этот раз мы выбрали площадку с большей вместимостью, поскольку кол-во регистраций в этот раз было сильно выше (как и дошедших до локации участников), чему мы были несказанно рады! Под катом — записи докладов, фото, видео и как это было.

https://habr.com/ru/companies/axiomjdk/articles/922702/

#обзор #java #митап #митапы #митапы_в_москве #jvm #обратная_совместимость #компилятор #компиляторы #ide

И как оно? Рассказываем как прошёл второй Java Rock Stars Meetup

Привет, Хабр! Первый Java Rock Stars Meetup прошёл на ура (обзор первого митапа см. тут ) и вы сказали, что хотели бы ещё. Ну, что ж, мы услышали, приняли и сделали. В конце мая мы провели второй Java...

Хабр

Вспомнил одну штуку, которую мне как-то показал мой друг.

Любой #компилятор можно положить, просто переполнив #AST(Abstract Syntax Tree — конструкцию, которая нужна для представления кода в более удобном для оптимизации и дальнейшей компиляции виде). Чтобы это сделать, не нужны никакие шаблоны на плюсах, достаточно поставить около тысячи открывающих и столько же закрывающих скобок)))

Иронично, что это работает даже на компиляторе LISP — языка, в котором скобки играют чуть ли не главную роль.

Можете потыкать Compiler Explorer (https://godbolt.org), там есть компилятор почти для любого языка

Compiler Explorer

Compiler Explorer is an interactive online compiler which shows the assembly output of compiled C++, Rust, Go (and many more) code.