Gracias por tu interes en contribuir a este proyecto.
Este documento describe las normas para contribuir al desarrollo del proyecto.
El repositorio usa un modelo de ramas inspirado en GitFlow.
Ramas principales:
release -> versiones estables
develop -> desarrollo principal
refactor/* -> refactorizaciones grandes
feature/* -> nuevas funcionalidades
hotfix/* -> correcciones urgentes
Reglas importantes:
- No hacer commits directamente en
release - Las nuevas funcionalidades deben desarrollarse en
feature/* - Los cambios estructurales grandes deben ir en
refactor/* - Los arreglos criticos deben ir en
hotfix/*
git checkout develop
git checkout -b feature/nombre-feature
Realiza los cambios necesarios y luego abre un Pull Request hacia develop.
Para cambios grandes en la arquitectura del proyecto:
git checkout develop
git checkout -b refactor/nombre-refactor
Una vez terminado se fusiona de nuevo en develop.
Para arreglar errores en una versión estable:
git checkout release
git checkout -b hotfix/nombre-fix
Despues del arreglo:
git checkout release
git merge hotfix/nombre-fix
git checkout develop
git merge hotfix/nombre-fix
El proyecto usa CMake.
Instalar dependencias:
sudo apt install build-essential cmake libssl-dev
Compilar:
mkdir build
cd build
cmake ..
cmake --build .
Ejecutar:
./vm
Requisitos:
- compilador C++
- CMake
- OpenSSL
Compilar:
mkdir build
cd build
cmake ..
cmake --build .
Debug:
cmake -DCMAKE_BUILD_TYPE=Debug ..
Release:
cmake -DCMAKE_BUILD_TYPE=Release ..
Se recomienda usar mensajes claros y descriptivos.
Formato sugerido:
tipo: descripción corta
Ejemplos:
feat: add bytecode loader
fix: resolve memory leak in VM stack
refactor: improve memory allocator
docs: update build instructions
Tipos comunes:
feat nueva funcionalidad
fix corrección de errores
refactor cambios internos sin alterar funcionalidad
docs documentación
build cambios en compilación
test cambios en tests
Antes de abrir un PR asegurate de:
- El proyecto compila correctamente
- No hay warnings nuevos
- El código sigue el estilo del proyecto
- La funcionalidad esta probada
Recomendaciones generales:
- mantener funciones pequeñas y claras
- evitar dependencias innecesarias
- documentar código complejo
- evitar optimizaciones prematuras
Se recomienda comprobar el código con herramientas de analisis de memoria:
valgrind --leak-check=full ./vm
El proyecto debe ejecutarse sin fugas de memoria.
El proyecto usa Semantic Versioning:
MAJOR.MINOR.PATCH
Ejemplo:
0.1.0
0.2.0
1.0.0
Gracias por contribuir.