Немного о новом языке
Terra на основе Lua---------------------
Мы используем популярный скриптовый язык Lua для поэтапного выполнения нового низкоуровневого языка Terra. Пользователи могут реализовать оптимизацию на языке высокого уровня и использовать встроенные конструкции для генерации и выполнения высокопроизводительного кода Terra.
Для упрощения метапрограммирования Lua и Terra используют одну и ту же лексическую среду, но для обеспечения производительности код Terra может выполняться независимо от среды выполнения Lua.
Мы оцениваем наш дизайн, полностью переосмысливая существующие многоязычные системы в Terra.
Наш автонастройщик на базе Terra для подпрограмм BLAS
выполняет в пределах 20% от ATLAS, а наш DSL для трафаретных вычислений выполняется в 2,3 раза быстрее, чем рукописный C.
-------------------------
Мы представляем экзотипы, определяемые пользователем типы, которые сочетают гибкость метаобъектных протоколов в динамически типизированных языках с контролем производительности языков низкого уровня. Подобно объектам в динамических языках, экзотипы определяются программно во время выполнения, позволяя вести себя на основе внешних данных, таких как схема базы данных. Для достижения высокой производительности мы используем поэтапное программирование для определения поведения экзотипа на этапе компиляции во время выполнения и реализуем экзотипы на Terra, низкоуровневом поэтапном языке программирования.
Мы покажем, как конструкторы exotype создают и используют exotypes для реализации высокопроизводительных библиотек для сериализации, динамической сборки, автоматического дифференцирования и вероятностного программирования. Каждый экзотип обеспечивает выразительность, аналогичную библиотекам, написанным на языках с динамической типизацией, но реализует оптимизации, которые превосходят производительность существующих библиотек, написанных на низкоуровневых языках со статической типизацией. Хотя каждая реализация значительно короче, наша библиотека сериализации в 11 раз быстрее, чем Kryo, а наш динамический ассемблер в 3-20 раз быстрее, чем ассемблер Chrome от Google.