Full language support for the Ashes pure functional programming language.
Read the documenation here.
Or review the source here.
Features
- Syntax highlighting — TextMate grammar for
.ashfiles - Diagnostics — real-time error and warning squiggles from the Ashes language server
- Formatting — auto-format on save using the canonical Ashes formatter
- Hover — compiler-inferred signatures, parameter and return types, plus embedded standard-library documentation and reference links
- Go to Definition — jump to function and binding definitions
- Completions — context-aware IntelliSense suggestions
- Semantic tokens — rich token-level highlighting
- Debugging — integrated DAP support with breakpoints, stepping, and variable inspection (GDB / LLDB backends)
- Compile / Run / Test — run Ashes programs directly from the editor
Quick Start
- Install the extension from the VS Code Marketplace (or build locally).
- Open a folder containing
.ashfiles. - The language server starts automatically when you open an Ashes file.
- Use Ctrl+F5 to run or Shift+F5 to compile the active file.
Install Toolchain
Run Ashes: Install Toolchain from the Command Palette (Ctrl+Shift+P) to
pre-download the compiler, language server, and debug adapter in one step.
Commands
| Command | Default Key | Description |
|---|---|---|
| Ashes: Compile | Shift+F5 |
Compile the active .ash file or project |
| Ashes: Run | Ctrl+F5 |
Compile and run the active file/project |
| Ashes: Run Tests | — | Run tests in the workspace or active file |
| Ashes: Install Toolchain | — | Download compiler, LSP, and DAP binaries |
Settings
| Setting | Default | Description |
|---|---|---|
ashes.autoStartLanguageServer |
true |
Automatically start the language server when an .ash file is opened. Set to false to disable automatic startup. |
ashes.debugger |
"gdb" |
Native debugger backend (gdb or lldb) |
ashes.lspServerPath |
"" |
Override the language server binary path |
ashes.dapServerPath |
"" |
Override the DAP server binary path |
ashes.compilerPath |
"" |
Override the compiler binary path |
Debugging
- Compile your program with
--debug:ashes compile --debug myprogram.ash -o myprogram - Add a launch configuration (or let the extension generate one):
Optional pre-launch task:{ "name": "Ashes: Launch", "type": "ashes", "request": "launch", "program": "${workspaceFolder}/out/${workspaceFolderBasename}", "cwd": "${workspaceFolder}", "stopOnEntry": false, }
The{ "label": "ashes: compile (debug)", "type": "shell", "command": "${command:ashes.getCompilerPath}", "args": [ "compile", "--debug", "${file}", "-o", "${workspaceFolder}/out/${workspaceFolderBasename}", ], "group": { "kind": "build", "isDefault": true, }, "problemMatcher": [], }${command:ashes.getCompilerPath}variable lets the extension provide the configured, bundled, or downloaded compiler path without requiringashesto be installed on your shellPATH. - Press F5 to start debugging.
A Taste of Ashes
import Ashes.IO as io
import Ashes.Collection.List as list
type Shape =
| Circle(Float)
| Rect(Float, Float)
let area = fun (s) ->
match s with
| Circle(r) -> 3.14159 * r * r
| Rect(w, h) -> w * h
in
[Circle(5.0), Rect(3.0)(4.0), Circle(1.0)]
|> list.map(area)
|> list.map(io.print)
Workspace Trust
This extension requires a trusted workspace because it downloads and executes external toolchain binaries. In an untrusted workspace, all download-related features are disabled and an informational message is shown.
Requirements
- VS Code 1.110+
- Node 20.19+ (extension host)
- Linux x64, Linux arm64, or Windows x64
Links
License
MIT — see LICENSE.