Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le langage fonctionnel et impératif Janet, qui reprend des fonctionnalités de Lua et Clojure,
S'apparente à une version légère de Lisp implémentée en C

Le , par Stéphane le calme

32PARTAGES

11  0 
Janet, un langage fonctionnel et impératif ainsi qu'un interprète de bytecode, est en cours de développement en tant que plateforme polyvalente pour le code expressif. Le langage, nommé d'après un personnage de l'émission télévisée The Good Place (plus précisément une intelligence artificielle presque omnisciente et amicale), se compose d’une bibliothèque principale, d’un interpréteur, du compilateur et de l'assembleur.

Version Lisp implémentée dans une norme C précédente connue sous le nom de C99, le langage Janet reprend les fonctionnalités de Lua et Clojure. Il peut servir de langage de script ou être intégré à d'autres programmes. Janet convient au prototypage et fonctionne sur Windows, MacOS et Linux, et il peut être porté sur d'autres systèmes.

Sur la page dédiée à ce langage, il est expliqué « Janet fait un bon langage de script système ou un langage à intégrer dans d'autres programmes. Pensez Lua ou Guile. Janet peut également être utilisée pour le prototypage rapide, les systèmes dynamiques et d'autres domaines où Lisp brille. Implémentée principalement dans la norme C99, Janet fonctionne sur Windows, Linux et macOS. Les quelques fonctionnalités qui ne sont pas standard C (chargement dynamique de bibliothèque, optimisations spécifiques au compilateur) sont assez simples. Janet peut être facilement portée sur de nouvelles plateformes ».

Les fonctionnalités de Janet sont :
  • configuration minimale - un binaire et vous pouvez commencer!
  • Fermetures de première classe
  • Récupérateur de mémoire
  • Green threads (threads qui sont planifiés par une bibliothèque d'exécution ou une machine virtuelle au lieu d'être natifs par le système d'exploitation sous-jacent) de première classe
  • Générateurs de style Python (implémentés comme une macro)
  • Tableaux mutables et immuables (tableau / tuple)
  • Tables de hachage mutables et immuables (table / struct)
  • Chaînes mutables et immuables (buffer/string)
  • Macros Lisp
  • Interprète de code d'octets avec une interface d'assemblage, ainsi que la vérification de bytecode
  • Optimisation de Tailcall
  • Interopérabilité directe avec C via des types abstraits et des fonctions C
  • Chargement dynamique des bibliothèques C
  • Bibliothèque standard fonctionnelle et impérative
  • Programmation impérative et fonctionnelle
  • REPL
  • Analyse des grammaires d'expression intégrées à la bibliothèque principale
  • Plus de 300 fonctions et macros dans la bibliothèque principale
  • Environnement interactif avec des traces de pile détaillées
  • Exportez vos projets vers des exécutables autonomes avec un outil de compilation compagnon, jpm



Utilisation

Un repl est lancé lorsque le binaire est appelé sans arguments. Passez l'indicateur -h pour afficher les informations d'utilisation. Des scripts individuels peuvent être exécutés avec ./janet myscript.janetSi vous cherchez à faire de l’exploration, vous pouvez imprimer une liste de toutes les macros, fonctions et constantes disponibles en entrant la commande (all-bindings) dans le repl.

Code Janet : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
$ janet 
Janet 1.7.1-dev-951e10f  Copyright (C) 2017-2020 Calvin Rose 
janet:1:> (+ 1 2 3) 
6 
janet:2:> (print "Hello, World!") 
Hello, World! 
nil 
janet:3:> (os/exit) 
$ janet -h 
usage: build/janet [options] script args... 
Options are: 
  -h : Show this help 
  -v : Print the version string 
  -s : Use raw stdin instead of getline like functionality 
  -e code : Execute a string of janet 
  -r : Enter the repl after running all scripts 
  -p : Keep on executing if there is a top level error (persistent) 
  -q : Hide prompt, logo, and repl output (quiet) 
  -k : Compile scripts but do not execute (flycheck) 
  -m syspath : Set system path for loading global modules 
  -c source output : Compile janet source code into an image 
  -n : Disable ANSI color output in the repl 
  -l path : Execute code in a file before running the main script 
  -- : Stop handling options

S’ils sont installés, vous pouvez exécuter man janet et man jpm pour avoir les informations sur les usages.

Intégration

Janet peut être intégrée très facilement dans un programme hôte. La build normale créera un fichier build/janet.c, qui est un seul fichier C qui contient toute la source de Janet. Ce fichier, avec src/include/janet.h et src/conf/janetconf.h, peut être glissé dans n'importe quel projet C et compilé dans le projet. Janet devrait être compilée avec -std=c99 sur la plupart des compilateurs, et devra être liée à la bibliothèque mathématique, -lm, et à l'éditeur de liens dynamique, -ldl, si l'on veut pouvoir charger des modules dynamiques. S'il n'y a pas besoin de modules dynamiques, ajoutez le define -DJANET_NO_DYNAMIC_MODULES aux options du compilateur.

Source : langage Janet (GitHub), langage Janet (site officiel), documentation

Et vous ?

Que pensez-vous de Janet ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de vanskjære
Membre averti https://www.developpez.com
Le 20/05/2020 à 12:15
Qu'elle ne ressemble pas à la vrai Janet......Remboursé!!!

Sinon on rentre dans l'éternel débat du "Encore un langage qui seras utilisé que par son créateur et trois barbus hipsters" ou autres phrases du genre.
2  0 
Avatar de web bea
Futur Membre du Club https://www.developpez.com
Le 22/05/2020 à 22:20
Aucun intérêt...
Ha bon? Mais pourquoi donc? Peut-être auriez-vous pu argumenter un peu plus...
En l'occurrence il me semble que c'est plutôt votre commentaire qu'on pourrait qualifier d'inintéressant...

Aviez-vous seulement pris la peine de jeter un coup d'oeil à la documentation?

Il faut parfois faire preuve d'un peu de curiosité, regarder ce qui se fait ailleurs, ce qui sort de nouveau...

Personnellement j'ai trouvé la présentation qui en est faite sur https://janet-lang.org fort intéressante.
1  0 
Avatar de Aiigl59
Membre régulier https://www.developpez.com
Le 20/05/2020 à 17:30
Ne pleure pas janeeette ! .... Aucun intérêt...
1  1