Jnane Language 🚀¶
Langage de programmation événementiel avec support natif de la programmation par aspects
🎯 Vue d'Ensemble¶
Jnane est un langage de programmation innovant qui combine :
- Programmation Événementielle : Tout est événement
- Programmation par Aspects (AOP) : Support natif des aspects
- Typage Dynamique : Type system flexible avec vues (views)
- Immutabilité : Atomes immuables avec historique
- Arguments Nommés : Clarté et sécurité des appels
Statistiques Features
- Total: 127 features
- Implémentées: ~80
- En cours: ~10
- Planifiées: ~37
🚀 Démarrage Rapide¶
Installation¶
# Cloner le repository
git clone https://github.com/gregoirerichard/jnane.lang.git
cd jnane.lang
# Build avec Maven
mvn clean install
# Exécuter un exemple
java -jar target/jnane-1.0.0.jar src/main/sample/helloWorld.jn
Guide d'installation détaillé →
Premier Programme¶
📚 Documentation¶
127 Features
93 Samples
56 Docs
200+ Tests
📖 Guides Principaux¶
- Guide de Démarrage - Introduction au langage
- Spécifications Features - 127 features documentées
- Documentation Technique - Référence complète
- Exemples (Samples) - Exemples et features
🎓 Apprendre Jnane¶
🔧 Caractéristiques Principales¶
Événements et Immutabilité¶
// Tout est événement
user = users:create(name: "Alice", email: "alice@example.com")
// Les objets sont immuables, l'historique est conservé
user2 = user:update(email: "alice@newmail.com")
// user et user2 sont différents, user est inchangé
Arguments Nommés¶
// Clarté des appels de fonction
result = math:calculate(
operation: "add",
left: 10,
right: 5,
precision: 2
)
Vues (Views)¶
// Type system flexible avec vues
@view("PersonView")
person = {
name: "Bob",
age: 30,
email: "bob@example.com"
}
// Projection partielle
publicInfo = person @ PublicView // Seulement name et age
Aspects (AOP)¶
@aspect
@before(target: "users:create")
logUserCreation = {
log:info(message: "Creating new user...")
}
🎫 Ticketing et Contributions¶
GitHub Issues¶
Créer une issue | Créer une issue | Créer une issue
GitHub CLI¶
# Lister les features
gh issue list --label feature
# Créer une issue
gh issue create --title "[FEAT-XXX] My Feature" --label feature
# Voir une issue
gh issue view 123
Système de Ticketing¶
Le projet utilise un système de ticketing intégré :
- 127 features trackées (FEAT-001 à FEAT-127)
- Scripts de synchronisation avec GitHub Issues
- Templates d'issues prêts à l'emploi
- GitHub Actions pour automatisation
Documentation complète du système →
🏗️ Architecture du Projet¶
jnane.lang/
├── src/
│ ├── main/
│ │ ├── java/ # Code source Java
│ │ ├── antlr4/ # Grammaire ANTLR
│ │ ├── sample/ # 93 exemples .jn
│ │ └── doc/ # Documentation technique
│ └── test/ # Tests unitaires (200+)
│
├── project/
│ ├── spec/
│ │ └── features/ # 127 specs FEAT-XXX
│ ├── docs/ # Documentation projet
│ └── tasks/ # Tâches de développement
│
├── scripts/ # Scripts d'automatisation
├── docs/ # Documentation MkDocs
└── mkdocs.yml # Configuration MkDocs
📊 Statistiques du Projet¶
Maturité des Features¶
| Maturité | Count | Pourcentage |
|---|---|---|
| Haute (≥4.0) | 25 | 20% |
| Moyenne (2.5-4.0) | 70 | 55% |
| Basse (<2.5) | 32 | 25% |
Statut d'Implémentation¶
| Statut | Count | Pourcentage |
|---|---|---|
| ✅ Implémenté | 80 | 63% |
| 🚧 En cours | 10 | 8% |
| 📋 Planifié | 20 | 16% |
| ❌ Non implémenté | 17 | 13% |
🤝 Contribuer¶
Nous accueillons les contributions ! Voici comment participer :
- Fork le repository
- Créer une branche :
git checkout -b feature/ma-feature - Commiter :
git commit -m "feat(FEAT-XXX): Description" - Pusher :
git push origin feature/ma-feature - Créer une Pull Request
Conventions¶
- Commits : Format Conventional Commits
- Features : Specs FEAT-XXX obligatoires
- Tests : Coverage minimal 80%
- Documentation : Toute feature doit être documentée
📖 Ressources¶
Documentation¶
- Spécifications Features - Specs complètes
- Documentation Technique - Référence API
- Index des Samples - Exemples
- Mapping Documentation - Liens doc↔feature
Outils¶
Communauté¶
📜 Licence¶
Ce projet est sous licence MIT.
🙏 Remerciements¶
Développé avec ❤️ par Grégoire Richard
Propulsé par : - ANTLR4 - Parser generator - Java - Runtime - Maven - Build tool - MkDocs Material - Documentation
Dernière mise à jour : 2025-10-26
Version : 1.0.0-SNAPSHOT