Endo 0.1.0

500px.jpg

Состоялся первый публичный выпуск 0.1.0 кроссплатформенной интерактивной командной оболочки и интерпретатора функционального языка в стиле F# Endo.

Проект создан автором и основным разработчиком эмулятора терминала Contour на языке C++ (стандарт C++23) и распространяется по лицензии Apache 2.0.

В этом выпуске:

  • Язык
    • связывания, по умолчанию являющиеся неизменяемыми при использовании let, и изменяемые при использовании let mut;
    • вывод типов (Hindley-Milner) — типы проверяются, но их редко приходиться указывать явно;
    • сопоставление шаблонов с условиями, деструктуризация и шаблоны «или»;
    • дискриминированные объединения, записи и встроенные типы Option/Result;
    • функции-карри, частичное применение и композиция функций (>>, <<);
    • лямбда-выражения с синтаксисом заполнителей (_ + 1, _.field);
    • списочные конструкции с диапазонами и фильтрами;
    • «ленивые» вычисления и последовательности;
    • оптимизация хвостовой рекурсии;
    • модули и импорт.
  • Средства разработки
    • Language Server Protocol — полнофункциональный сервер LSP ($ endo --lsp) с диагностикой, автодополнением, подсказками при наведении курсора, переходом к определению, поиском ссылок, переименованием, форматированием, семантическими токенами, действиями над кодом, встроенными подсказками, Code Lens и многим другим;
    • Debug Adapter Protocol — полнофункциональный сервер DAP ($ endo --dap) с поддержкой точек останова, пошагового выполнения, просмотра переменных, вычисления выражений и дизассемблирования;
    • расширение для VS Code — подсветка синтаксиса, интеграция с LSP/DAP, фрагменты кода и отладка без дополнительной настройки.
  • Оболочка
    • выполнение команд, совместимое с Bash: перенаправление, шаблоны, &&/||, управление задачами;
    • структурированные встроенные команды — ls, ps, jobs, git log, git status, docker ps — возвращают типизированные записи с данными;
    • двойные конвейеры: |> для композиции функций, | для процессов;
    • подстановка переменных/команд/процессов, развертывание фигурных скобок и тильды;
    • более 110 встроенных команд и функций языка;
    • выполнение скриптов .endo с разрешением модулей.
  • Режим «ИИ»-агента
    • встроенная «ИИ»-помощь, запускаемая с помощью символа # в пустом поле ввода;
    • поддерживаемые онлайн-провайдеры: Claude, OpenAI, OpenAI-совместимые (Ollama, vLLM, LM Studio) и Gemini;
    • поддержка локальных моделей в формате GGUF проекта llama.cpp;
    • 18 встроенных инструментов для работы с файлами, git, выполнения команд и доступа к веб-ресурсам;
    • потоковая передача ответов в формате Markdown.

>>> Подробности на GitHub

©  Linux.org.ru