После почти девяти месяцев работы Maple C компилятор (ARM backend) достиг уровня GCC 7.5 -O2 и превзошёл его. Для получения конкретных данных и процесса обратитесь к следующей таблице.
Хотя мы верили в возможности нашего Maple-фреймворка, прогресс был быстрее, чем ожидалось. Участники сообщества Maple действительно проделали отличную работу. Этот милицейский камень указывает на то, что как отечественный компилятор, Maple имеет базовый фреймворк, который ничуть не уступает основным компиляторам. Более того, благодаря гибкости расширяемого IR, мы смогли продемонстрировать свои преимущества при быстрой разработке оптимизированного компилятора.
Наши текущие планы включают продолжение оптимизации, но основной акцент больше не будет сосредоточен на SPEC. Мы считаем, что уже достаточно показали свою эффективность в этой области, а также Maple имеет более широкую сцену для развития. Наша цель — углубление и расширение наших возможностей, включая:
Традиционные статические компиляторы
a) Кросс-модульный анализ между модулями
b) Обратная связь на всех уровнях (средний уровень, конечный уровень, двоичный уровень)
c) Попытки поддержки нескольких backends (x64, arm32, riscv)
d) Разработка собственного переднего конца
Вне традиционных статических компиляторов...
a) Легковесные фреймы JIT/AOT
b) Да, мы никогда не прекращали попыток статического преобразования динамических языков...
Расширение языка и адаптация к различным требованиям и сценариям
Кроме традиционных высокопроизводительных требований, новые сценарии применения также требуют большего разнообразия от компилятора, таких как безопасность, обслуживание и т.д. Драйвер новых языковых расширений является движущей силой системы Maple, и это также прекрасная возможность для демонстрации нашей способности к гибкому расширению IR.
В целом, мы полагаем, что система Maple уже обладает всем необходимым для становления платформой исследования и инженерии последних технологий компиляции и программирования. Кроме того, этот C компилятор отличается от Java тем, что он не связан с большим количеством runtime, поэтому мы можем сделать его полностью открытым исходным кодом, обеспечивая полную прозрачность. Сердечно надеемся, что вы попробуете и примете участие.
Каждый день делайте шаг вперёд.
Benchmark | Case | ARM-GCC | MapleC(текущий) | Отклонение |
---|---|---|---|---|
500.perlbench_r | case_1 | 219.544 | 224.34 | -2.41% |
case_2 | 138.25 | 152.99 | ||
case_3 | 168.737 | 161.39 | ||
502.gcc_r | case_1 | 66.437 | 69.53 | -3.70% |
case_2 | 81.435 | 84.17 | ||
case_3 | 80.429 | 82.77 | ||
case_4 | 75.677 | 78.51 | ||
case_5 | 99.139 | 103.64 | ||
505.mcf_r | case_1 | 579.71 | 558.91 | +3.72% |
525.x264_r | case_1 | 67.538 | 63.728 | +9.80% |
case_2 | 255.368 | 226.456 | ||
case_3 | 241.598 | 218.369 | ||
557.xz_r | case_1 | 146.37 | 149.764 | +0.25% |
case_2 | 182.037 | 175.596 | ||
case_3 | 134.697 | 135.584 | ||
Среднее | +1.53% |