ludic/tools/editors/vscode
Orkuncakilkaya c10abd9f9f feat(jobs): real OS threads - Job.parallel_for, fn name, thread-safe Sync
- `fn name` names a top-level function as a value (E_FNREF, lowers to @fn_<name>); the worker
  entry point for Job.parallel_for, which checks it takes (int, pointer-like) and returns void.
- runtime/native/threads.ll (pthreads) and threads_win.ll (Win32 SRWLOCK/CONDITION_VARIABLE): a
  pool of one worker per core but one, parked between batches; every thread claims chunks by
  compare-and-swap. Linked only into programs that use Job/Promise/Sync, by `ludicc -o`,
  `ludic build` and the test suite's build helper.
- Sync.* is real: native mutexes, atomics as cmpxchg retry loops (neither clang takes atomicrw,
  the PC's rejects seq_consistent), mutex-guarded channels, Sync.cpu_count from the OS.
- spawn/despawn on a pool thread stop the program with a located panic.
- examples/library/threads.ludic and its test; docs for fn, Job.parallel_for, Job.is_worker.
- Reseeded (bootstrap-cfree: out.ll == seed.ll). 141/141 on macOS; jobs, threads and the guard
  pass on Windows from the reseeded Windows seed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:52:22 +03:00
..
icons Baseline: Ludic compiler + toolchain, Phase 1 syntax fixes complete 2026-08-27 15:15:35 +03:00
snippets fix(tools): formatter bracket rules, LSP compiler diagnostics, vocabulary sync 2026-09-05 01:12:26 +03:00
src refactor(cli)!: split the contributor tool out of the ludic CLI 2026-09-05 23:15:12 +03:00
syntaxes feat(jobs): real OS threads - Job.parallel_for, fn name, thread-safe Sync 2026-09-15 13:52:22 +03:00
.vscodeignore Baseline: Ludic compiler + toolchain, Phase 1 syntax fixes complete 2026-08-27 15:15:35 +03:00
language-configuration.json fix(tools): formatter bracket rules, LSP compiler diagnostics, vocabulary sync 2026-09-05 01:12:26 +03:00
package-lock.json Baseline: Ludic compiler + toolchain, Phase 1 syntax fixes complete 2026-08-27 15:15:35 +03:00
package.json fix(tools): formatter bracket rules, LSP compiler diagnostics, vocabulary sync 2026-09-05 01:12:26 +03:00
README.md refactor(cli)!: split the contributor tool out of the ludic CLI 2026-09-05 23:15:12 +03:00

Ludic for VS Code

Syntax highlighting, formatting, and full language-server support for Ludic, the AI-first, ECS-native game language. See LANGUAGE.md in the Ludic repository for the language reference.

What you get

Source
Syntax highlighting TextMate grammar, works with no build
Semantic highlighting ludic-lsp — real name resolution, so a component reads differently from a local
Diagnostics structural errors as you type; ludicc's own errors on save
Completion context-aware: fields after ., components inside query [...], phases after phase, widgets inside ui
Hover signatures and docs for builtins, intrinsics, and everything you declared
Go to definition / references / rename across every file in the compilation unit, following import
Formatting format-on-save, comment-preserving
Outline, folding, inlay hints, signature help
```ludic fences in Markdown highlighted, checked, and formatted

Setup

Build the toolchain once, from the repository root:

bin/ludic-dev tools

That produces bin/ludic-lsp and bin/ludic-fmt, which the extension finds on its own. If you keep them elsewhere, set ludic.server.path.

Format on save:

"[ludic]": { "editor.formatOnSave": true }

Settings

  • ludic.server.path — where ludic-lsp lives (~ and ${workspaceFolder} expand). Empty = search bin/, then PATH.
  • ludic.server.enabled — turn the server off and keep only static highlighting.
  • ludic.compilerPath — where ludicc lives, for on-save diagnostics (~ and ${workspaceFolder} expand).
  • ludic.compilerDiagnostics — whether to run the compiler at all.
  • ludic.indentSize — spaces per level for the formatter.
  • ludic.trace.server — log LSP traffic (Ludic: Show Language Server Log).

Installing without publishing

cd tools/editors/vscode
npm install
npx @vscode/vsce package
code --install-extension ludic-1.0.0.vsix