Aller au contenu

Jnane Language 🚀

Jnane Logo

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

@name("helloWorld")

main = print(message: "Hello, Jnane!")

Tutoriel complet →


📚 Documentation

127 Features
93 Samples
56 Docs
200+ Tests

📖 Guides Principaux

🎓 Apprendre Jnane

  1. Introduction au Modèle de Base
  2. Arguments Nommés
  3. Système de Types et Vues
  4. Programmation par Aspects

🔧 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é

FEAT-003 | FEAT-005

Arguments Nommés

// Clarté des appels de fonction
result = math:calculate(
  operation: "add",
  left: 10,
  right: 5,
  precision: 2
)

FEAT-009

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

FEAT-030

Aspects (AOP)

@aspect
@before(target: "users:create")
logUserCreation = {
  log:info(message: "Creating new user...")
}

FEAT-053


🎫 Ticketing et Contributions

GitHub Issues

Créer une issue | Créer une issue | Créer une issue

Voir toutes les issues

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

Guide complet GitHub CLI →

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 :

  1. Fork le repository
  2. Créer une branche : git checkout -b feature/ma-feature
  3. Commiter : git commit -m "feat(FEAT-XXX): Description"
  4. Pusher : git push origin feature/ma-feature
  5. Créer une Pull Request

Guide de contribution →

Conventions

  • Commits : Format Conventional Commits
  • Features : Specs FEAT-XXX obligatoires
  • Tests : Coverage minimal 80%
  • Documentation : Toute feature doit être documentée

Guidelines du projet →


📖 Ressources

Documentation

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