KCL developing guide.
Enhancement
The current KCL repository has initially established simple development documents, ISSUE and PR templates, etc. However, there is a lack of detailed developer manuals to help all developers develop better collaboratively, such as https://github.com/rust-lang/rustc-dev-guide in rustc.
To sum up, KCL needs a corresponding developer manual to describe the following things clearly:
- How to participate in the design and discussion of KCL
- How to practice on the basis of existing KCL code
- How to write tests and verify development features
- How to merge code into KCL code repository trunk
- KCL architecture and compiler sub-module principle explanation
I have designed a TOC for the development guide, welcome to discuss.
# Summary
[About this guide]()
[Getting Started]()
---
## Building, Testing and Debugging `KCLVM`
### How to Build and Run `KCLVM`
#### Prerequisites
#### Build from Source Code
#### Working with Docker Image
#### Run `KCLVM`
### Testing `KCLVM`
#### Running Tests
#### Adding New Tests
#### Performance Testing
#### Fuzzing
### Debugging `KCLVM`
## Contributing to `KCLVM`
### Introduction
### Language Design and Discussion
#### KCL Enhancement Proposal (KEP)
### Language Implementation
#### How to Do a Bug Fix.
#### How to Process the Development of a Small Function
#### How to Complete the Development of an Important Function
### Development Tools
#### Using IDE
#### Using Git
#### Continuous Integration (CI)
#### Issues and Pull Requests
### A Typical Contribution
### Version Maintenance Policy
### Coding Conventions
### Notification Groups
### License
## Compiler Architecture
### Overview
### Syntax
#### Lexer
#### Parser
#### Abstract Syntax Tree (AST)
### Sematic
#### Type System
#### Scope
#### Resolver
### Code Generation
#### Control Flow Graph (CFG)
#### LLVM
#### WASM
### Runtime
#### Values
#### System Standard Libraries
### Error Handling
### Config
### Plugin
### Tools
#### Format Tool
#### Documentation Tool
#### Lint Tool
#### Query Tool
#### Validation Tool
### Language Server Protocol (LSP)
## Appendix A: Glossary
## Appendix B: Code Index
## Appendix C: Bibliography
Things to be considered:
- Working with dev docker image
- Conformance testing
- Version maintenance policy
- Performance check rules
- Dev process. E.g.:
- How to do a bug fix
- How to process the development of a small function
- How to complete the development of an important function
- Focus on clarifying the requirements for testing and code specification at the very beginning
Considering separating the developer manual of KCLVM into a separate repo for easy maintenance, as well as providing multi-language versions.
Closed by #1194