Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Foundry: Ruby для встраиваемых устройств (RailsClub 2013)

Peter Zotov
September 28, 2013

Foundry: Ruby для встраиваемых устройств (RailsClub 2013)

Foundry — Ruby-подобный язык со статической типизацией и выразительным метапрограммированием, который компилируется в машинный код, сравнимый по эффективности с Си. В Foundry есть все знакомые абстракции Ruby: утиная типизация, send, method_missing, замыкания и прочие, но в отличие от Ruby они "бесплатные": не уменьшают производительность кода.

Peter Zotov

September 28, 2013
Tweet

More Decks by Peter Zotov

Other Decks in Programming

Transcript

  1. Что такое эмбеддед? Rasberry Pi, Arduino: любительская микроэлектроника Часть более

    крупной системы Должно выполнять единственную задачу Центральная часть — микропроцессор
  2. Где используются? Всевозможные бытовые устройства В автомобиле — ~80 модулей

    В смартфонах и ноутбуках как вспомогательные модули Билеты, ключи
  3. Требования Проще контроллер — меньше стоимость Меньше требования к другим

    частям — опять же, меньше стоимость Энергопотребление: беспроводные датчики должны работать годами Кастомизация контроллеров под задачи
  4. Ограничения, ограничения Способность загрузить Linux — исключение, а не правило

    Arduino Uno 16MHz 32K Flash 2K RAM Maple Leaf 72MHz 128K Flash 20K RAM Raspberry Pi 700MHz 512M RAM
  5. Существующие решения Си. Иногда — ассемблер. Разработка: долго и дорого.

    Тесты очень важны, но тестировать сложно. Попытки: mruby, espruino, uJ, megapython, pymite, ... Отдельно про mruby.
  6. Что не так с альтернативой Виртуальная машина Нет низкоуровневых операций

    Разработчику все равно нужно знать внутренности VM, Си и ассемблер. Нет реального времени
  7. Си: 1973 Маленький, простой в реализации компилятор Легко портировать на

    другие платформы Нет: замыканий, метапрограммирования, ООП, GC, модулей, стандартных способов сборки и тестирования...
  8. Си: 2013 GCC 4.8: 2000 KLOC (C/C++) / 7300 KLOC

    LLVM+Clang 3.3: 780 KLOC Портирование: новый бекенд для существующего компилятора Всё еще нет: замыканий, метапрограммирования, ООП, GC, модулей, стандартных способов сборки и тестирования...
  9. Foundry Статически компилируемый диалект языка Ruby Область применения — системное

    программирование, встраиваемые устройства Компилируется в машинный код Можно использовать большинство высокоуровневых конструкций Ruby Не нужно писать на Си или ассемблере
  10. Как работает компилятор Исходник → виртуальная машина → оптимизатор Foundry

    → оптимизатор LLVM → машинный код Оптимизатор Foundry: классы, методы, … Оптимизатор LLVM: память, регистры, ...
  11. Foundry как продукт Коммерческий компилятор, открытая стандартная библиотека Кроссплатформенный, написан

    на OCaml Альфа-версия: скоро! Единственный способ получить релиз или плату — записаться на сайте http://foundry-lang.org/
  12. Что дальше? http://foundry-lang.org Подписывайтесь, чтобы получить первые сборки Foundry —

    позже в этом году. Или демо-платы. Мы будем раздавать демо-платы. Я отвечу на ваши вопросы после доклада. Примеры и stdlib по адресу: https://github.com/evilmartians/foundry-lib