translations/CONTRIBUTING_RU.md
Rama main · réplica de lectura del repositorio original.
# Участие в разработке Zen C
Во-первых, спасибо, что решили внести свой вклад в Zen C! Именно такие люди, как вы, делают этот проект замечательным.
Мы приветствуем ваш вклад! Исправление ошибок, добавление документации, предложение новых функций или просто сообщение о проблемах.
## Как внести свой вклад
Общий рабочий процесс для внесения вклада:
1. **Создайте форк репозитория**: используйте стандартный рабочий процесс GitHub, чтобы создать форк репозитория в вашу учётную запись.
2. **Создайте ветку функции**: Создайте новую ветку для вашей функции или исправления ошибки. Это помогает держать ваши изменения организованными и отдельными от основной ветки.
```bash
git checkout -b feature/NewThing
```
3. **Внесите изменения**: Напишите ваш код или изменения в документации.
4. **Проверьте**: Убедитесь, что ваши изменения работают как ожидается и не ломают существующую функциональность (см. [Запуск тестов](#запуск-тестов)).
5. **Отправьте запрос на слияние**: Запушьте вашу ветку в ваш форк и отправьте Pull Request (PR) в основной репозиторий Zen C.
## Задачи (Issues) и Запросы на слияние (Pull Requests)
Мы используем GitHub Issues и Pull Requests для отслеживания ошибок и функций. Чтобы помочь нам поддерживать качество:
- **Используйте шаблоны**: При открытии Issue или PR используйте предоставленные шаблоны.
- **Отчет об ошибке**: Для сообщения об ошибках.
- **Запрос функции**: Для предложения новых функций.
- **Запрос на слияние**: Для отправки изменений кода.
- **Будьте подробны**: Предоставьте как можно больше деталей.
- **Автоматические проверки**: У нас есть автоматизированный рабочий процесс, который проверяет длину описания новых Issues и PR. Если описание слишком короткое (< 50 символов), оно будет автоматически закрыто. Это нужно для того, чтобы у нас было достаточно информации, чтобы помочь вам.
## Руководство по разработке
### Стиль кода
- Следуйте существующему стилю Си, который используется в кодовой базе. Последовательность — это ключ.
- Вы можете использовать предоставленный файл `.clang-format` для форматирования вашего кода.
- Держите код чистым и читаемым.
### Структура проекта
Если вы хотите расширить компилятор, вот краткая карта кодовой базы:
* **Parser**: `src/parser/` - Содержит реализацию рекурсивного парсера спуска.
* **Codegen**: `src/codegen/` - Содержит логику транспилера, который конвертирует Zen C в GNU C/C11.
* **Стандартная библиотека**: `std/` - Модули стандартной библиотеки, написанные на самом Zen C.
## Запуск тестов
Набор тестов — ваш лучший друг при разработке. Пожалуйста, убедитесь, что все тесты проходят перед отправкой PR.
### Запустить все тесты
Чтобы запустить полный набор тестов, используя компилятор по умолчанию (обычно GCC):
```bash
make test
```
### Запустить конкретный тест
Чтобы запустить один файл теста для экономии времени во время разработки:
```bash
./zc run tests/test_match.zc
```
### Тестирование с разными бэкендами
Zen C поддерживает несколько компиляторов Си в качестве бэкендов. Вы можете запускать тесты специально для них:
**Clang**:
```bash
./tests/run_tests.sh --cc clang
```
**Zig (cc)**:
```bash
./tests/run_tests.sh --cc zig
```
**TCC (Tiny C Compiler)**:
```bash
./tests/run_tests.sh --cc tcc
```
## Процесс запроса на слияние
1. Убедитесь, что вы добавили тесты для любой новой функциональности.
2. Убедитесь, что все существующие тесты проходят.
3. Обновите документацию (Markdown файлы в `docs/`, `translations/` или `README.md`), если это уместно.
4. Ясно опишите ваши изменения в описании PR. Ссылайтесь на любые связанные задачи (issues).
Спасибо за ваш вклад!