Greboca  

Suport technique et veille technologique

Aujourd’hui, les grandes entreprises et administrations publiques hésitent entre continuer à utiliser des logiciels propriétaires ou basculer vers les Logiciels Libres. Pourtant, la plupart des logiciels libres sont capables de bien traiter les données issues des logiciels propriétaire, et parfois avec une meilleur compatibilité.

C’est alors la barrière de la prise en main qui fait peur, et pourtant...

Les logiciels libres

L’aspect « Logiciel Libre » permet une évolution rapide et une plus grande participation des utilisateurs. Les aides et tutoriels foisonnent sur Internet ou sont directement inclus dans le logiciel lui-même.

Enfin, les concepteurs sont plus proches des utilisateurs, ce qui rend les logiciels libres plus agréable à utiliser et conviviaux.

Grâce à la disponibilité des logiciels libres, vous trouverez facilement des services de support techniques et la licence n’est plus un frein à l’utilisation de ces logiciels par votre personnel.

Notre support technique concerne essentiellement les logiciels libres, que ce soit sous forme de services ponctuels ou de tutoriels.

DLFP - Dépêches  -  De OCaml à ReScript : création d'un nouveau langage ?

 -  Février 2022 - 

Depuis toujours, le compilateur propose deux manières pour générer un programme exécutable à partir d’un code source OCaml : produire un programme binaire (dépendant de l’architecture donc) ou un byte code qui peut être réutilisé sur n’importe quelle plateforme.

Il y a dix ans, le projet js_of_ocaml apparaissait, permettant de transformer ce bytecode (que pratiquement personne n’utilise) en code JavaScript. Ce projet a ouvert une porte dans l’univers web, puisqu’il permet d’utiliser la force du langage OCaml (typage, réutilisation des bibliothèques existantes) directement dans le navigateur. Il devient possible de contrôler un formulaire saisi par l’utilisateur dans le navigateur, ou sur le serveur avec le même code : il suffit d’inclure la même bibliothèque dans la chaîne de compilation JavaScript et dans la chaîne de compilation du serveur.

Le problème du projet js_of_ocaml vient du fait qu’il se nourrit du bytecode généré par ocaml : le code JavaScript qu’il produit est un code binaire qui n’est pas destiné à être lu ou modifié. Il faut faire confiance à la chaîne de compilation qui garantit que le code qui s’exécute est bien celui correspondant au code source. De plus, étant donné que l’on passe par du bytecode, le code suit la représentation mémoire utilisée par OCaml. Une liste chaînée par exemple, est représentée en JavaScript avec la même structure qu’elle le serait en C, alors que des types natifs JavaScript auraient pu être utilisés.

Bucklescript

C’est dans ce contexte qu’apparaît en 2016 Bucklescript (EN). Ce projet, propose d’utiliser le compilateur OCaml pour générer du code JavaScript natif. Il ne s’agit plus cette fois de transformer du bytecode en code JavaScript, mais de prendre le code source, pour l’adapter directement, avec toutes les optimisations possibles.

Le code suivant (exemple tiré depuis l'outil de test en ligne (EN) :

let rec hanoi n a b c =
  if n > 0
  then
    (hanoi (n - 1) a c b;
     Js.log {j|Move disk from pole $a to pole $b|j};
     hanoi (n - 1) c b a)
let _ = hanoi 4 1 2 3

est dès lors transformé en ce code JavaScript :

// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE
'use strict';


function hanoi(_n, _a, b, _c) {
  while(true) {
    var c = _c;
    var a = _a;
    var n = _n;
    if (n <= 0) {
      return ;
    }
    hanoi(n - 1 | 0, a, c, b);
    console.log("Move disk from pole " + a + " to pole " + b);
    _c = a;
    _a = c;
    _n = n - 1 | 0;
    continue ;
  };
}

hanoi(4, 1, 2, 3);

exports.hanoi = hanoi;
/*  Not a pure module */

Le projet, soutenu par Facebook, s’accompagne également d’une nouvelle syntaxe, Reason (EN), qui a pour but de faciliter l’accès au langage et d’éviter la difficulté d’accès liée à OCaml. Ce langage/projet prend pied dans le monde JavaScript, est compatible avec npm pour gérer les paquets, et grâce à la force du langage OCaml, permet d’unifier deux univers différents. On assiste à des projets tels que revery (EN), qui permet d’écrire des applications lourdes (avec SDL) ou web à partir d’un code unique, et comme le langage n’est qu’une couche syntaxique au langage OCaml, apporte également de la visibilité au langage.

Sauf que cette compilation au plus près des sources a un prix : celle de hacker le compilateur OCaml, et d’être dépendant d’une version donnée. Les versions d’OCaml évoluent, mais le code de bucklescript reste figé sur une version datant de 2017 (4.06), sans bénéficier des dernières avancées. De plus, la syntaxe Reason est mise en avant, OCaml étant présenté comme syntaxe alternative. Au final, il y a assez peu de porosité entre ces deux univers : le gestionnaire de paquet opam reste le gestionnaire officiel pour OCaml, esy (EN) et npm sont utilisables avec Reason, et bien que quelques passerelles existent, les deux univers coexistent l’un à côté de l’autre sans réellement fusionner.

ReScript

En 2020, Bucklescript et Reason deviennent ReScript. Derrière ce changement de nom se cache également un changement de direction : OCaml n’est plus présenté comme syntaxe alternative — même s’il est toujours utilisé dans la chaîne de compilation, le monde JavaScript seul est pleinement assumé. On peut supposer que nous sommes en train d’assister à la naissance d’un nouveau langage qui prend son envol à partir d’OCaml (comme F# l’a fait également en son temps, passant d’un simple backend .NET pour OCaml à un langage indépendant et intéressant). Même si l’on peut regretter une dispersion dans les ressources, souhaitons bonne chance à ReScript !

N. D. M. : le compilateur est sous LGPLv3 avec exception pour les liens et la documentation du langage sous MIT.

Commentaires : voir le flux Atom ouvrir dans le navigateur

par chimrod, Ysabeau, palm123, Snark, Benoît Sibaud, tisaac, Obi MO, vmagnin, Nicolas Casanova, gasche, Ltrlg

DLFP - Dépêches

LinuxFr.org

Entretien avec GValiente à propos de Butano

 -  16 avril - 

GValiente développe un SDK pour créer des jeux pour la console Game Boy Advance : Butano.Cet entretien revient sur son parcours et les raisons (...)


Nouveautés d'avril 2024 de la communauté Scenari

 -  11 avril - 

Scenari est un ensemble de logiciels open source dédiés à la production collaborative, publication et diffusion de documents multi-support. Vous (...)


Annuaire de projets libres (mais pas de logiciels)

 -  9 avril - 

Les communs sont une source énorme de partage !S’il est plutôt facile dans le monde francophone de trouver des ressources logicielles (Merci (...)


Les enchères en temps réel, un danger pour la vie privée mais aussi pour la sécurité européenne

 -  7 avril - 

Les enchères en temps réel, ou Real-Time Bidding (RTB), sont une technologie publicitaire omniprésente sur les sites web et applications mobiles (...)


XZ et liblzma: Faille de sécurité volontairement introduite depuis au moins deux mois

 -  31 mars - 

Andres Freund, un développeur Postgres, s’est rendu compte dans les derniers jours que xz et liblzma ont été corrompus par l’un des mainteneurs du (...)