Обновить

Как мы добавили поддержку языка Frege в IDEA. Часть 1

Время на прочтение13 мин
Охват и читатели8.2K
Всего голосов 35: ↑35 и ↓0+35
Комментарии10

Комментарии 10

Интересно как ведет себя jvm-овский gc для чистого языка как frege? Он не тормозит от большого кол-ва маленьких объектов в памяти?

Плюсую. Ещё хотелось бы взглянуть на бенчмарки какого-нибудь Finger Tree для этого языка, в GHC, например, патчили рантайм, чтобы там такие деревья действительно шустро работали...

Сразу стоит отметить, что мы занимались исключительно разработкой плагина.

Что насчет большой производительности языка, то о ней даже не стоит говорить. Если посмотреть, во что превращается код на Frege, то можно заметить, что он полон различных оберток (например, Lazy<>), которые сильно тормозят его. 

Но Frege не гонится за производительностью: его преимущество в том, что он такой же лаконичный и безопасный (в плане иммутабельности данных), как Haskell, но совместим с другими JVM-языками. Да, производительность — его слабое место :(

Интересно, сколько времени на это ушло? Когда писал свой плагин, документация скудная была. Информацию приходилось по крупицам искать в других плагинах или в кишки IDE с дэбагером лезть.

Могу сказать, что на одну лишь навигацию с индексацией было потрачено около 30-40ч в неделю в течении 1.5-2 месяцев, и она ещё очень далека от идеала.

С документацией до сих пор большие проблемы, хотя есть тот милый туториал, указанный в статье, но его все равно слишком мало. В основном, информация бралась из плагинов для Фортрана, Хаскеля и Эльма. И, конечно, приходилось очень много дебагать, как вы уже сказали, в кишках :(

На систему сборки ушло довольно много времени, хотя она и не была завязана на фрейморк IDEA. Все потому, что язык слабо поддерживается, версии компиляторов между собой плохо совместимы, да и существующие системы сборки Frege сильно устарели и не очень хотят работать :(

Но вообще о системе сборки будет написано в 2 части статьи)

Привет из 2024.

Хочу сообщить, что документация всё еще скудная и приходится изучать другие проекты / собирать статьи в интернетах.

Реализация навигации и всё прочее всё еще отнимает тучу времени :)

Рассматривали вариант сделать https://langserver.org/ ? В теории это могло бы дать поддержку языка во множестве различных ide. А возможно бы и упростило вам работу, благодаря наличию документации и рабочих примеров.

Language Server хороший вариант, если мы хотим сделать универсальный вариант для нескольких ide, текстовых редакторов и тд. Но продукты JB как раз отличаются тем, что реализуют всё сами, а не пользуются готовыми LSP. Плюс этого подхода — более гибкий функционал, больше возможностей для интеграции, скорость работы и тд. Для плагинов принят такой же подход. Ну а frege без java не имеет смысла (потому что тогда это просто хаскель), так что интегрироваться только в IDEA - нормально вроде

Отличное введение в платформу IntelliJ! Буду использовать как еще одно пособие для новичков.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Информация

Сайт
spb.hse.ru
Дата регистрации
Дата основания
1998
Численность
201–500 человек
Местоположение
Россия
Представитель
Павел Киселёв