Documentation
The reference material is maintained with the compiler, in the repository.
All documents below live in
docs/ and
describe version 0.0.93-A, language surface 4.
Language and implementation reference
| Document | Contents |
|---|---|
FEATURE-MATRIX.md |
Every C# 13 construct: status, semantics, JVM lowering, tests, and the reason for each exclusion |
GRAMMAR.md |
The grammar, precedence, associativity and error-recovery rules |
BYTECODE.md |
Type mappings, descriptors, and the emitted shape of every construct |
CLI.md |
Options, exit codes, output modes, JDK visibility, platforms |
EDITORS.md |
The language server and the extension |
ASYNC.md |
How async/await maps onto virtual threads and Future |
Where to start
If you are new to V#
- About V# — what the language is and is not
- Getting Started — build it and run a program
- Examples — each feature, with real output
If you know C#
- The three rules — where V# is stricter than C#
- Deliberate exclusions — and the reason for each
- The feature matrix — construct by construct
If you know the JVM
V# emits standard class files with java.lang.classfile; the mapping from V#
constructs to descriptors and emitted shapes is documented in
BYTECODE.md.
JDK types are resolved against the JDK the compiler runs on, and the default module image is
nameable without configuration — see
direct JDK integration.
Diagnostics
Diagnostics are C#-exact where a C# diagnostic exists. V#'s own rules add their own codes
— for example VS20007 and VS20008 for brace style,
VS20006 for the PascalCase spelling of JVM members, and VS20012 for
qualified type names. The CLI can print one line per diagnostic for CI with
--diagnostics compact; exit codes are listed in
CLI.md.
Editors
vsharp-lsp provides diagnostics, completion, signature help, hover,
go-to-definition and symbols. The VS Code / VSCodium extension is packaged as a
.vsix with the server bundled, and its TextMate grammar is generated from the
language definition. See
EDITORS.md.
Documentation is versioned with the compiler. If something here and the repository disagree, the repository is authoritative — please open an issue.
