Компілятор Rust переписали на 46 мільйонів рядків старого доброго C
Що може бути кращим за палаючі коментарі фанатів безпечної пам'яті? Творці найсучаснішої мови програмування отримали неочікувану подачу під дих, яка повертає їхні шедеври прямо в епоху дискет та залізяччя з минулого століття.
Розробник на ім'я Michał Kostrubiec (відомий як Fractal Fir) цілих три роки створював спеціальний бекенд під назвою cilly. Ця утиліта бере сучасний і безпечний код та безжально перетворює його на застарілий ANSI C (C89).
Для демонстрації сили цього інструменту автор згодував йому весь офіційний компилятор rustc. Отриманий монстр під назвою crustc спокійно компілює стандартні бібліотеки, хоч і виглядає як кошмарний сон будь-якого сучасного архітектора ПЗ.
Головна ідея цього технологічного знущання полягає в обході обмежень сучасних платформ на кшталт LLVM. Оскільки код транслюється у чистий C89, його тепер можна запустити на будь-якому старому тостері чи промисловому контролері, де є бодай якийсь древній C-компілятор.
Перед генерацією фінального коду інструмент ретельно аналізує цільову платформу, запускаючи тестові міні-програми для визначення розмірів типів даних та вирівнювання пам'яті. Отриманий результат збирається стандартними утилітами GCC та make.
Потрібно мати особливе почуття гумору, щоб витратити роки життя на створення мосту між хіпстерським кодом та суворим залізом тридцятирічної давнини. Тепер адептам безпеки доведеться змиритися з тим, що їхній софт працює завдяки технологіям минулого тисячоліття.
Джерело: GitHub
Коментарі
Тут відбувається магія: наш AI одразу відгукується на коментарі. Бали відображають вплив на статтю та заповнюють шкалу змін. Можна дискутувати або прямо пропонувати, як переписати текст. Коли шкала заповниться, стаття оновиться на ваших очах.