How sere-language/sere works
Sere is a statically typed, ahead-of-time language compiler that produces native executables and .slib libraries. The principal workflow starts at the sere command, processes source through lexical, syntactic, and semantic stages, then generates and optimizes LLVM code for native output. The repository also includes macro expansion, project and package management, a language server with editor support, and a C/C++ runtime. Several driver and code-generation call sites were not sampled, so those relationships are marked unverified rather than asserted.
Main entry points: Frontend.cpp Frontend · LanguageServer.cpp Language Server · main.cpp Compiler CLI · Compiler.cpp Compiler Driver
Components 28
Compiler Front End
- Compiler CLI
tools/sere/main.cpp - Compiler Driver
lib/driver/Compiler.cpp - Frontend
lib/driver/Frontend.cpp - Source Manager
lib/source/SourceManager.cpp - Lexer
lib/lex/Lexer.cpp - Parser
lib/parse/Parser.cpp - Syntax AST
lib/ast/Syntax.cpp - Macro Expander
lib/macro/Expander.cpp - Type Checker
lib/sema/TypeChecker.cpp - Type Context
lib/types/TypeContext.cpp - Diagnostics
lib/diag/DiagnosticEngine.cpp
Native Code Generation
- LLVM IR Generator
lib/codegen/IRGenerator.cpp - Optimization Pipeline
lib/codegen/OptPipeline.cpp - Sere LLVM Backend
lib/codegen/backends/SeremLLVMBackend.cpp
Projects And Packages
- Project Manager
lib/driver/Project.cpp - Package Manager
lib/driver/Packages.cpp - Package Registry
lib/driver/Registry.cpp - Installer
lib/driver/Installer.cpp
Editor Services
- Language Server
lib/lsp/LanguageServer.cpp - AST Queries
lib/ast/Query.cpp - Completion
lib/lsp/MemberCompletion.cpp - Import Completion
lib/lsp/ImportCompletion.cpp - Semantic Tokens
lib/lsp/SemanticTokens.cpp - VS Code Extension
editors/vscode/extension.js
Runtime
- Sere Runtime
runtime/sere_rt.c - Standard Library Runtime
runtime/sere_stdlib.c
Other components
- Sere Developer
- Native Executable
Connections 31
- Sere Developer → Compiler CLI: invokes
README.md - Compiler CLI → Compiler Driver: delegates
tools/sere/main.cpp - Compiler Driver → Frontend: compiles with
- Frontend → Source Manager: uses
- Frontend → Type Checker: checks with
- Frontend → Type Context: uses
- Lexer → Source Manager: reads
- Parser → Lexer: uses
lib/parse/Parser.cpp - Parser → Syntax AST: builds
lib/parse/Parser.cpp - Type Checker → Syntax AST: checks
lib/sema/TypeChecker.cpp - Type Checker → Type Context: resolves types
- Frontend → Diagnostics: reports errors
- Macro Expander → Diagnostics: reports errors
lib/macro/Expander.cpp - Frontend → Macro Expander: expands macros
- Compiler Driver → LLVM IR Generator: generates code
- LLVM IR Generator → Optimization Pipeline: optimizes IR
- Optimization Pipeline → Sere LLVM Backend: lowers LLVM
- Sere LLVM Backend → Native Executable: emits native code
- Compiler CLI → Project Manager: manages projects
- Project Manager → Package Manager: uses packages
- Package Manager → Package Registry: queries registry
- Package Manager → Installer: installs dependencies
- Sere Developer → Language Server: requests editor help
README.md - Language Server → Frontend: analyzes documents
lib/lsp/LanguageServer.cpp - Language Server → AST Queries: queries AST
lib/lsp/LanguageServer.cpp - Language Server → Completion: provides completion
lib/lsp/LanguageServer.cpp - Language Server → Import Completion: completes imports
lib/lsp/LanguageServer.cpp - Language Server → Semantic Tokens: provides tokens
lib/lsp/LanguageServer.cpp - VS Code Extension → Language Server: connects to
- Native Executable → Sere Runtime: uses
- Sere Runtime → Standard Library Runtime: provides