Октябрь пролетел незаметно. При расширении библиотеки поддержки Abra AbraLib мы обнаружили причину для нескольких незначительных изменений в языке Abra, чтобы упростить его использование. Кроме того, AbraLib был очищен, и были созданы некоторые начальные передовые практики / шаблоны.

Интерпретатор был дополнительно расширен для правильной обработки переменных состояния, и был создан начальный Qubic Dispatcher, который может отправлять данные о событиях между внешними источниками данных и внутренними объектами Qubic, представленными функциями Abra. Нашим следующим шагом будет система подключаемых модулей, которая позволит нам подключать любой тип источника данных по мере необходимости.

Еще одно дополнение к интерпретатору - это первая версия генератора исходного кода Verilog, которая будет использоваться для генерации кода для ПЛИС. Сгенерированный код еще далек от того, что должен быть, но теперь, когда у нас есть отправная точка, которую легко изменить, это означает, что мы добьемся быстрого прогресса, как только мы начнем тестирование на реальных ПЛИС.

AbraLib также был расширен. Сначала мы добавили недостающую функцию целочисленного деления. Затем набор предварительных арифметических функций с фиксированной и плавающей точкой. В частности, функции с плавающей запятой подчеркивают универсальность Abra. Код очень общий, но вы можете адаптировать размер типов с плавающей запятой точно к вашим потребностям таким образом, который не имеет себе равных в любом другом языке. Размер мантиссы и экспоненты можно указывать отдельно, независимо друг от друга. Вот несколько примеров типов с плавающей запятой из AbraLib:

type TinyFloat {
  mantissa [Tiny] // +/- 9,841
  exponent [Tiny] // +/- 3^9,841
}
type Float {
  mantissa [Int]  // +/- 3,812,798,742,493
  exponent [Tiny] // +/- 3^9,841
}
type HugeFloat {
  mantissa [Int2]  // +/- 29,074,868,501,520,029,845,195,084
  exponent [Tiny2] // +/- 3^193,710,244
}

Важность нашего сообщества

В этом месяце наше сообщество еще больше приняло участие. Ben75 продолжал обновлять свою подсветку синтаксиса IntelliJ, чтобы соответствовать нашим изменениям синтаксиса, а также расширял его функциональность, добавляя такие вещи, как переименование сущностей и переход к определениям / использованию сущностей. Он даже зашел так далеко, что выделил неиспользуемые операторы импорта. Все это он делает в свободное время просто для удовольствия. Он также оказался отличным помощником для любых идей, которые мы придумали для улучшения языка, и даже предложил несколько своих собственных.

В начале этого месяца мы разместили вызов сообществу на канале #qubic на Discord, чтобы помочь нам встроить LLVM JIT-компиляцию в интерпретатор. Наш известный друг MicroHash, прославившийся Qubic-Lite, принял вызов и сумел создать работающую JIT-компиляцию в рекордно короткие сроки!

Это еще раз подчеркнуло его способность делать дела быстро и качественно. Качество его кода было превосходным, а объем ввода, который ему требовался с нашей стороны, был смехотворно минимальным. Это укрепило нашу решимость попытаться привлечь его на борт. Мы рады сообщить, что с 1 ноября MicroHash присоединился к команде Qubic!

Это всего лишь двое из наших замечательных членов сообщества. Мы знаем, что вы все собираетесь пойти и поиграть с Аброй, чтобы увидеть, что возможно. В ближайшем будущем мы, вероятно, решим еще несколько задач, в которых вы сможете помочь сформировать направление нового языка программирования для Интернета вещей. Чтобы помочь с этим, мы дорабатываем нашу документацию.

Документация Abra

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

  • Часть 1: Abra: функциональный язык потока данных
  • Часть 2: основные сущности языка программирования Abra
  • Часть 3: Функции и выражения Abra
  • Часть 4: основные операции Abra
  • Часть 5. Собираем все вместе на примерах
  • Часть 6: Кубический диспетчер

Мы стремимся выпустить эту документацию вместе со стабильной версией интерпретатора Abra. Будьте уверены, мы так же жаждем вовлечь вас всех, как и вы сами. Спасибо за ваше терпение. Мы знаем, что это был долгий процесс, но результаты определенно того стоят!