È stata rilasciata la prima versione pubblica 0.1.0 di una shell interattiva multipiattaforma e di un interprete per un linguaggio funzionale in stile F# Endo.
Il progetto è stato creato dall'autore e principale sviluppatore dell'emulatore di terminale Contour in C++ (standard C++23) e distribuito sotto la licenza Apache 2.0.
In questa versione:
- Lingua
- binding, che sono immutabili di default quando si utilizza let, e modificabili quando si utilizza let mut;
- inferenza dei tipi (Hindley-Milner) — i tipi vengono controllati, ma raramente è necessario specificarli esplicitamente;
- pattern matching con condizioni, distruzione e pattern "o";
- unioni discriminate, record e tipi integrati Option/Result;
- funzioni curried, applicazione parziale e composizione di funzioni (>> , <<);
- espressioni lambda con sintassi dei segnaposto (_ + 1, _.field);
- costruzioni di elenco con intervalli e filtri;
- calcoli "pigri" e sequenze;
- ottimizzazione della ricorsione di coda;
- moduli e importazione.
- Strumenti di sviluppo
- Language Server Protocol — server LSP completo ($ endo —lsp) con diagnostica, completamento automatico, suggerimenti al passaggio del mouse, salto alla definizione, ricerca di riferimenti, rinominazione, formattazione, token semantici, operazioni sul codice, suggerimenti incorporati, Code Lens e molto altro;
- Debug Adapter Protocol — server DAP completo ($ endo —dap) con supporto per breakpoint, esecuzione passo-passo, visualizzazione delle variabili, calcolo delle espressioni e disassemblaggio;
- espansione per VS Code — evidenziazione della sintassi, integrazione con LSP/DAP, frammenti di codice e debug senza configurazione aggiuntiva.
- Shell
- esecuzione di comandi compatibili con Bash: reindirizzamento, pattern, &&/||, gestione dei task;
- comandi integrati strutturati — ls, ps, jobs, git log, git status, docker ps — restituiscono record tipizzati con dati;
- pipeline doppie: |> per la composizione di funzioni, | per i processi;
- sostituzione di variabili/comandi/processi, espansione delle parentesi graffe e delle tilde;
- oltre 110 comandi e funzioni integrati del linguaggio;
- esecuzione di script .endo con risoluzione dei moduli.
- Modalità "agente" AI
- aiuto "AI" integrato, attivato con il simbolo # in un campo di input vuoto;
- fornitori online supportati: Claude, OpenAI, compatibili con OpenAI (Ollama, vLLM, LM Studio) e Gemini;
- supporto per modelli locali in formato GGUF del progetto llama.cpp;
- 18 strumenti integrati per lavorare con file, git, eseguire comandi e accedere a risorse web;
- streaming delle risposte in formato Markdown.
Fonte: linux.org.ru
