Noyaux isolés#

Utilisateurs de Capytale

Si vous utilisez Basthon dans Capytale, vous devriez consulter la documentation de Capytale sur les noyaux isolés.

Depuis mai 2026, les noyaux de Basthon sont isolés. Cela signifie que le code est exécuté dans un environnement séparé de celui qui exécute et rend la page web. Ceci permet :

  • une sécurité accrue : le code exécuté n’a pas accès aux données d’authentifications de l’utilisateur sur Capytale et il ne peut donc pas faire des requêtes sur le serveur à son insu ;

  • une parallélisation : l’exécution d’un long calcul ne bloque pas la page, le noyau peut être interrompu ;

  • un rendu plus fluide : les interactions avec l’utilisateur (print et input en Python) sont affichées en temps réel ;

  • mais avec quelques limitations : par exemple, certaines fonctionnalités du module p5 en Python ne sont pas encore disponibles (voir ci-dessous).

Quels noyaux sont isolés ?#

Tous : Python, OCaml, JS, SQL, XCAS et C.

Cas particulier de l’utilisation du module p5#

Le module p5 fonctionne avec les noyaux isolés. Le dessin est calculé dans le noyau puis affiché dans un cadre isolé de la page, qui transmet au noyau les interactions (souris, clavier, écran tactile).

Quelques différences sont à connaître :

  • pour que le dessin réagisse au clavier, il faut d’abord cliquer dessus (un contour coloré indique qu’il reçoit les touches) ;

  • loadImage charge les images du système de fichiers local : fichiers ouverts dans Basthon, créés par Python ou, pour les exemples de la galerie, fichiers auxiliaires. Un chemin relatif (loadImage("image.png")) désigne un fichier de ce système de fichiers ;

  • les éléments HTML (createButton, createSlider, createInput, createSelect, createCheckbox, createRadio, createP…) sont affichés sous le dessin (ou à la position donnée par position(x, y), relative au coin supérieur gauche du dessin) mais leur taille et leur position effectives ne peuvent pas être lues (size() et position() sans argument renvoient 0) ;

  • certaines fonctionnalités ne sont pas encore disponibles : la vidéo et la webcam (createCapture, createVideo…), le son (p5.sound) et le chargement de bibliothèques (load_library).

Pour utiliser ces fonctionnalités, reportez-vous à la section Comment retrouver les noyaux non isolés ?.

Cas particulier de l’utilisation du module matplotlib#

Le module matplotlib fonctionne avec les noyaux isolés, figures interactives comprises. La figure est calculée dans le noyau puis affichée dans un cadre isolé de la page : affichage des coordonnées sous la souris, zoom, déplacement, historique des vues, événements souris et clavier (mpl_connect), animations et export de la figure (PNG, SVG, PDF…) via le bouton de téléchargement après avoir choisi le format.

Comme pour p5, pour que la figure réagisse au clavier, il faut d’abord cliquer dessus.

Comment retrouver les noyaux non isolés ?#

Ces noyaux sont dits legacy. Il suffit d’ajouter le suffix -legacy au paramètre d’URL kernel=. Ainsi, par exemple, https://console.basthon.fr/?kernel=python3-legacy permet d’utiliser le noyau Python non isolé.

Seul le noyau Python dispose d’un mode legacy, conservé pour les fonctionnalités historiques de p5 et matplotlib. Les noyaux OCaml, JS, SQL, XCAS et C n’existent qu’en version isolée.