Zenv Programming Language powered by gopu.inc
Zenv est un langage de programmation moderne et expressif qui transpile vers Python. Une syntaxe élégante, un systÚme de packages complet et une intégration transparente avec Python.
Installation âą Documentation âą Exemples âą Packages âą Contribution
· Syntaxe moderne - Plus lisible et expressive que Python · Transpileur rapide - Conversion Zenv â Python en temps rĂ©el · SystĂšme de packages - Installation, gestion et publication · Hub communautaire - Partagez vos packages avec la communautĂ© · InteropĂ©rabilitĂ© Python - Utilisez toutes les bibliothĂšques Python · Type checking optionnel - Support des annotations de type · Async/await natif - Programmation asynchrone simplifiĂ©e
Installation directe
# Clonez le repository
git clone https://github.com/gopu-inc/zenv.git
cd zenv
# Installation
pip install -e .
# Vérifiez l'installation
zenv version
Via pip
pip install zenv-lang
Syntaxe de base
// Commentaire simple
print "Hello Zenv!"
// Variables
var nom = "Alice"
let age = 30
const PI = 3.14159
// Fonctions
function saluer(personne):
return "Bonjour " + personne + "!"
// Conditions
if age > 18 then:
print "Majeur"
else:
print "Mineur"
// Boucles
for i in range(5) do:
print "Itération: " + i
while x > 0 do:
print x
x = x - 1
// Classes
class Personne:
function __init__(self, nom, age):
self.nom = nom
self.age = age
function presentation(self):
return self.nom + " a " + self.age + " ans"
// String interpolation
let message = "Nom: #{nom}, Age: #{age}"
// Listes
let fruits = list("pomme", "banane", "orange")
fruits.append("kiwi")
// Dictionnaires
let personne = dict()
personne["nom"] = "Bob"
personne["age"] = 25
// Sets
let nombres = set(1, 2, 3, 3, 4) // {1, 2, 3, 4}
// Tuples
let coord = tuple(45.5, -73.5)
// Lambdas
let doubler = lambda x => x * 2
let addition = lambda a, b => a + b
// Map/Filter
let nombres = [1, 2, 3, 4, 5]
let carres = map(lambda x => x * x, nombres)
let pairs = filter(lambda x => x % 2 == 0, nombres)
// List comprehensions
let carres = [for x in nombres if x > 2 => x * x]
Exécution de code
# Exécuter un fichier .zv
zenv run programme.zv
# Avec des arguments
zenv run programme.zv arg1 arg2
# Transpiler vers Python
zenv transpile programme.zv -o programme.py
# Valider la syntaxe
zenv validate programme.zv
Création de packages
âą 1. Initialiser un projet :
mkdir mon-package
cd mon-package
⹠1. Créer package.zcf :
[Zenv]
name = mon-package
version = 1.0.0
author = Votre Nom
description = Description du package
license = MIT
[File-build]
main = main.zv
files = *.zv
README.md
LICENSE
[docs]
description = README.md
[dep.zv]
# Dépendances Zenv
zenv-stdlib = 1.0.0
[dep.py]
# Dépendances Python
requests = latest
⹠1. Créer main.zv :
print "Mon package Zenv!"
function hello(name):
return "Hello " + name + "!"
if __name__ == "__main__":
print hello("World")
âą 1. Build le package :
zenv build -f package.zcf
# GénÚre: dist/mon-package-1.0.0.zv
# Se connecter au Zenv Hub
zenv hub login zenv_votre_token
# Publier un package
zenv hub publish dist/mon-package-1.0.0.zv
# Rechercher des packages
zenv hub search "web framework"
# Installer un package
zenv pkg install requests
# Lister les packages installés
zenv pkg list
# Supprimer un package
zenv pkg remove package-name
Le Zenv Hub est le registre central des packages Zenv.
· URL: https://zenv-hub.vercel.appâ · Token: zenv_d57203aef4ed4584a0e2986bcded9172375d1903887a......
Endpoints API
# Vérifier le statut
zenv hub status
# Rechercher des packages
zenv hub search "database"
# Publier
zenv hub publish mon-package.zv
# Télécharger (via pkg install)
zenv pkg install nom-package
zenv/
âââ zenv/ # Code source
â âââ __init__.py
â âââ cli.py # Interface en ligne de commande
â âââ transpiler.py # Transpileur Zenv â Python
â âââ runtime.py # Runtime d'exĂ©cution
â âââ builder.py # SystĂšme de build de packages
â âââ hub/ # Client pour Zenv Hub
â âââ utils/ # Utilitaires
âââ examples/ # Exemples de code
âââ tests/ # Tests unitaires
âââ setup.py # Configuration d'installation
âââ README.md # Ce fichier
Zenv Code (.zv) â Transpileur â Python Code (.py) â InterprĂ©teur Python
â â
âââ Syntaxe moderne âââ Compatible Python 3.7+
âââ String interpolation âââ Performance native
âââ Mot-clĂ©s en français âââ AccĂšs Ă tout l'Ă©cosystĂšme Python
Exemple 1: Application Web
// webapp.zv
from flask import Flask, jsonify
import json
app = Flask(__name__)
class Utilisateur:
function __init__(self, nom, email):
self.nom = nom
self.email = email
function to_dict(self):
return {
"nom": self.nom,
"email": self.email
}
@app.route("/")
function accueil():
return "Bienvenue sur mon app Zenv!"
@app.route("/api/utilisateurs")
function get_utilisateurs():
utilisateurs = [
Utilisateur("Alice", "[email protected]"),
Utilisateur("Bob", "[email protected]")
]
return jsonify([u.to_dict() for u in utilisateurs])
if __name__ == "__main__":
app.run(debug=true)
// data_processing.zv
function charger_donnees(fichier):
with open(fichier, 'r') as f:
return json.load(f)
function traiter(donnees):
// Filtre
let filtrees = filter(lambda x: x["actif"], donnees)
// Transformation
let transformees = map(lambda x: {
"nom": x["nom"].upper(),
"valeur": x["score"] * 2
}, filtrees)
// Agrégation
let total = reduce(lambda acc, x: acc + x["valeur"], transformees, 0)
return {
"nombre": len(transformees),
"total": total,
"moyenne": total / len(transformees) if transformees else 0
}
function main():
let donnees = charger_donnees("data.json")
let resultats = traiter(donnees)
print "Résultats: " + str(resultats)
if __name__ == "__main__":
main()
// async_demo.zv
import asyncio
import aiohttp
async function fetch_url(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
return await response.text()
async function main():
let urls = [
"https://api.example.com/data1",
"https://api.example.com/data2",
"https://api.example.com/data3"
]
// Exécution parallÚle
let tasks = [fetch_url(url) for url in urls]
let results = await asyncio.gather(*tasks)
for i, result in enumerate(results):
print f"Résultat {i}: {len(result)} caractÚres"
if __name__ == "__main__":
asyncio.run(main())
Fichier de configuration utilisateur
// ~/.zenv/config.json
{
"user": {
"name": "Votre Nom",
"email": "[email protected]"
},
"hub": {
"url": "https://zenv-hub.onrender.com",
"auto_update": true
},
"transpiler": {
"strict_mode": false,
"auto_format": true
}
}
Variables d'environnement
export ZENV_HUB_TOKEN="zenv_votre_token"
export ZENV_DEBUG="true"
export ZENV_CACHE_DIR="$HOME/.zenv/cache"
Fonctionnalité Zenv Python String interpolation "Nom: #{nom}" f"Nom: {nom}" Déclaration fonction function nom(): def nom(): Condition if x then: if x: Boucle for for i in range(5) do: for i in range(5): Variables immuables let x = 5 x = 5 Classes class Nom: class Nom: Import from module import func from module import func
# 1. Transpiler vers Python
zenv transpile app.zv -o app.py
# 2. Créer requirements.txt
echo "flask==2.3.0" > requirements.txt
# 3. Déployer comme une app Python normale
# 1. Build le package
zenv build -f package.zcf
# 2. Publier sur le hub
zenv hub publish dist/*.zv
# 3. Les autres peuvent installer
zenv pkg install votre-package
Tests unitaires
# Exécuter tous les tests
python -m pytest tests/
# Tests spécifiques
python -m pytest tests/test_transpiler.py
# Avec couverture
python -m pytest --cov=zenv tests/
# tests/test_basics.py
import pytest
from zenv.transpiler import ZenvTranspiler
def test_print_statement():
transpiler = ZenvTranspiler()
zv_code = 'print "Hello"'
python_code = transpiler.transpile(zv_code)
assert python_code == 'print("Hello")'
Les contributions sont les bienvenues !
Processus de contribution
· Suivre PEP 8 pour le code Python · Documenter les nouvelles fonctions · Ajouter des tests pour les nouvelles fonctionnalités · Mettre à jour la documentation
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
· vercel - pour l'hebergement du site
· render - pour l'hebergement du api
· Python - Pour l'écosystÚme incroyable
· Flask - Pour l'inspiration de simplicité
· La communauté open-source - Pour toutes les contributions
· Issues GitHub: Signaler un bug · Documentation: Lire la docs · Communauté: Rejoindre le Discord
đ Commencer maintenant âą đ Voir les exemples âą đŠ Explorer les packages
v1.0.0 (Actuel)
· â Transpileur complet Zenv â Python · â SystĂšme de packages fonctionnel · â Zenv Hub avec publication/tĂ©lĂ©chargement · â CLI intuitive avec toutes les commandes · â Support async/await · â String interpolation · â Classes et hĂ©ritage
Prochaines versions
· SystÚme de modules amélioré · Type checking statique · Débogueur intégré · IDE extensions (VS Code, PyCharm) · Compilation vers WebAssembly · Support multi-threading avancé
đ Liens utiles
· đ Documentation complĂšteâ · đ Signaler problemeâ · đĄ Suggestions de fonctionnalitĂ©sâ · đŠ Packages populairesâ · đ„ CommunautĂ© Discordâ
Si Zenv vous est utile, pensez Ă :
· â Star le projet sur GitHub · đ Signaler les bugs · đĄ Proposer des fonctionnalitĂ©s · đą Parler de Zenv autour de vous
Ensemble, construisons l'avenir de la programmation !
Content type
Image
Digest
sha256:6e63bacedâŠ
Size
423.1 MB
Last updated
9 months ago
docker pull ceoseshell/zenv