Инкрементальная компиляция и улучшенный инструментарий
Crystal использует систему вывода типов, которая применяется ко всей программе одновременно для анализа и идентификации каждого типа выражения в программе. Это отличается от обычного вывода типа в других языках, поскольку оно работает за пределами границ метода, и типы аргументов не требуют явного типизации. Однако это имеет свою цену. Анализ всей программы на предмет типов требует, ну, всей программы сразу. Любое изменение любой строки в любом файле приводит к повторению всего анализа с самого начала.
Компиляция и анализ программ Crystal происходит немного медленнее, чем на других языках, но это плата за отличную производительность и потрясающий синтаксис, семантику и выразительность.
Существуют расширения для многих редакторов кода и IDE, поддерживающих Crystal, но они в основном основаны на самом компиляторе и, следовательно, не предлагают поэтапный анализ программы, и разработчику часто приходится ждать несколько секунд, прежде чем получить отзыв, например тип информация о наведении или смысловых ошибках. Скорее всего, он будет разработан как собственный языковой сервер.
Использование встроенных отладчиков работает, но они пока не обеспечивают полной поддержки Crystal для проверки любых переменных во время выполнения или оценки выражений.
В прошлом проводилась работа по улучшению времени компиляции, например кэширование промежуточных результатов или некоторые семантические изменения в самом языке. Но переосмысление средства проверки типов для постепенной работы потребует много усилий и времени. Понятно, что главным достоинством Crystal является его выразительность и тот факт, что им приятно пользоваться; любое внесенное изменение должно будет сохранить это. Тем не менее, петля обратной связи в настоящее время является болевой точкой, и со временем появятся улучшения, чтобы решить эту проблему. Если вы хотите узнать больше об этой задаче, посмотрите выпуск #10568. Есть также много других вопросов, касающихся различных аспектов поддержки инструментов.
Как связаться с сообществом
Перечисленные ранее темы и многие другие являются предметом ежедневного обсуждения сообществом, местом для понимания вариантов использования, споров о различных подходах к реализации и организации усилий по сотрудничеству. Присоединиться может любой желающий.
Основным каналом является форум https://forum.crystal-lang.org/. Там может происходить любое обсуждение: от гипотетических функций до обращения за помощью и проверки кода, от поиска вакансий Crystal до обмена созданными вами проектами.
Если вы ищете другие способы взаимодействия, загляните на https://crystal-lang.org/community; он объединяет ссылки с разных платформ.
Наконец, есть репозиторий GitHub, где происходит сотрудничество в разработке языка, по адресу https://github.com/crystal-lang/crystal. Это то место, куда вам следует обратиться, если вы хотите внести свой вклад в стандартную библиотеку или сам компилятор с помощью кода, улучшений документации или проблем.
Куда бы вы ни пошли, вы найдете там страстное сообщество, которое поможет, поделится опытом и поработает вместе.