kcl icon indicating copy to clipboard operation
kcl copied to clipboard

KCL developing guide.

Open Peefy opened this issue 3 years ago • 3 comments

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

Peefy avatar May 30 '22 09:05 Peefy

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

Peefy avatar May 31 '22 05:05 Peefy

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

ldxdl avatar Jun 01 '22 05:06 ldxdl

Considering separating the developer manual of KCLVM into a separate repo for easy maintenance, as well as providing multi-language versions.

Peefy avatar Jun 01 '22 09:06 Peefy

Closed by #1194

Peefy avatar Apr 09 '24 09:04 Peefy