Modules stdlib
Modules natifs livrés avec Catnip, chargés via import('name'). Implémentés en Rust comme plugins .so, sans
dépendance Python runtime.
À ne pas confondre avec les modules Python chargés via
-m(CLI) ouimport('numpy')(selon la policy). Les stdlib Catnip sont compilées dans le runtime ; les modules Python passent par le loader externe. Voir Module Loading pour la distinction.
Modules disponibles
| Module | Description |
|---|---|
http |
Client HTTP et serveur léger : verbes, JSON, streaming, multipart, cookies |
io |
Lecture / écriture fichiers (open, print, write, read) |
sys |
Métadonnées runtime (platform, version, cpu_count, argv, exit) |
Usage
import('http')
response = http.get("https://example.com")
print(response.status, response.body)
import('name') charge le module et le bind dans le scope courant sous le nom name. Variantes :
# Renomme
h = import('http')
h.get("https://example.com")
# Sélectif (extrait des symboles dans le scope)
import('http', 'get', 'post')
get("https://example.com")
Convention
Chaque module stdlib expose au minimum :
PROTOCOL = "rust": permet de distinguer les modules natifs des modules PythonVERSION: version semver du module
import('http')
print(http.PROTOCOL) # "rust"
print(http.VERSION) # "0.2.0"
Le
PROTOCOLest un signal stable : si un jour Catnip migre certains modules vers du WASM ou du WASI, la valeur changera et le code applicatif peut s'y adapter. Pour l'instant elle est constante.
Étendre
Pour écrire un nouveau module stdlib, voir catnip_libs/README.md (guide contributeur).
Le manifeste spec.toml reste la source de vérité pour les signatures exportées ; les pages dans docs/libs/
documentent l'usage et les patterns.