Vers un WDScript précompilé....

Après m'être aperçu que c'est la compilation qui prenait le plus de temps, et que je ne pourrais améliorer ce temps de réponse, une idée m'est venue... la précompilation : Une application web compilée qui sera chargée sous forme de WDL.

Cela revient à transformer wdscript en un exécutable CGI complet... (mais en conservant sa souplesse)

De plus, ce mode de fonctionnement est compatible linux, car Linux ne permet pas officieusement l'utilisation de la fonction Compile()

Dans la pratique, pour obtenir ce mode de fonctionnement, nous allons avoir besoin de plusieurs choses :

- Permettre à wdscript de charger ces WDL et de substituer les fonctions windev aux pages.wss
- Un outil pour transformer les pages d'un projet existant en code rapidement
- Eventuellement un moyen de transférer rapidement les codes sources dans Windev (copier/coller automatique de fonctions ?)

Je vais tenter de créer une WDL pour le projet WaSH... Le WDScript qui supportera cette fonctionalité sera la version 2.4

WDScript 12 v2.3.3

Je viens d'ajouter la version 2.3.3-12 de WDScript sur sourceforge (sources + version compilée avec acces natif mysql) :

Les versions 2.3.1 et 2.3.3 sont recommandées dans la branche 2.3.x

Téléchargez La version complète v2.3.3 : http://sourceforge.net/project/showfiles.php?group_id=88927

v2.3.3 (31-05-2008) - WD12 055n
 * Petits bugs de noms de fonctions suite à la traduction du code en francais dans les sources de la 2.3.2 
   (fonctions existantes en webdev)
 + Ajout d'informations exeDescription dans WDScriptInfo()
 + Utilisation de MesParametres pour les fonctions externes wlf (includes) 
   (le nombre de paramètres des fonctions n'est plus limité à 10, et optimise le traitement)
 o Optimisation des conditions avec _ET_, _OU_, _DANS_
 o Suite des optimisations par typage des paramètres de fonctions
 
v2.3.2-12 (31-05-2008) - WD12 055n
 o Fonction ChargeClasses/LoadClasses(<liste de wdl>) optimisée (chemins relatifs)
 o Optimisation du chargement des messages globaux en mode serveur (mise en cache) en cas d'utilisation de GetMessage(*,*,Vrai)
 o Optimisation d'un "gros" buffer dans GetQueryString (alloué uniquement en méthode POST)
 o Durees de compilation/parsing exprimées en millisecondes grâce aux variables de type Heure
 o Retrait des utilisations de la classe cDir, remplacé par la fonction fListeFichier()
 o SetEnvVariable remplacé par SetValue (pas besoin de propager les affectations internes)
 o Réactivation du SetThreadPriority (à désactiver ou remplacer sous linux)
 
v2.3.1-12 (11-05-08) - WD12 055f
 o ConvertTxtToHTML optimisée par fonction Windev HTMLVersTexte
 o cEnvVariable optimisée en évitant au maximum les exceptions
 o Remplacement des fonctions Gauche()/Left() par Var[[A x]]
 o Classe MD5 : Utilisation des fonctions HashChaine et HashFichier si v11 ou + (DLL non utilisée)
 o SourceParse amélioré légèrement
 * Bug dans ScriptExec (fonction externe avec paramètres)
 * Bug mode GZIP corrigé
 
v2.3.0-12 (10-05-08) - WD12 055f
  o Recherche du fichier Projet (pour éviter les fRep multiples)
  o Optimisation de l'extraction des sources (sera bientot encore amélioré)
  + Debut du Mode Linux (bloqué par fonction Compile)

J'en ai profité pour mettre à jour WasH 2.0+ sur Sourceforge (avec quelques correctifs perso)

Classe cTXT v3.35

Ma classe cTXT est un genre de couteau suisse de traitement de données texte
ou encore un substitut aux antiques zones mémoire de Windev 5

Elle fait partie intégrante de WDScript pour la gestion des fichiers de configuration (cache des fichiers INI en mémoire)
Vous pourrez donc obtenir la dernière version à jour dans les sources de WDScript (Windev 15 uniquement)

Elle permet aussi de transmettre un tableau de données à un état ou à une fenetre...

Elle utilise un tableau à deux dimensions pour stocker les données, exclusivement sous
forme de chaines et ressemble aux récentes fonctions TableauXXX qui ont été introduites avec la version 10 de windev.

J'utilise cette classe depuis de nombreuses années dans mes projets et a donc été testée de nombreuses fois...

Exemple qui affiche la seconde colonne d'un fichier CSV

oTxt est un cTXT
oTxt:sSeparatorX = ";"
oTxt:bCSVQuotes = Vrai
oTxt:Parse(fChargeTexte(sFichierCSV))

WDScript 12 vs 9 (Graphe de Performance)

V12 Optimisées ? J'ai travaillé avec toutes les versions et je peux dire que non, si l'on compare aux anciennes versions de Windev...
Par exemple si l'on désactive le JiTC, on se rend compte que Windev 12 est plus lent que Windev 11... S'il est activé, il peut etre légèrement
plus rapide, mais en utilisation générale on se retrouve avec les mêmes performances que Windev 11 (biensûr avec de nouvelles fonctions)...

Un équivalent windows à wlscript ?

Windev Easy Extern Langage Communication ou WEELC

Si vous recherchez une alternative sous windows de WLScript, ou plutot un outil similaire mais pas tout a fait identique, qui a la particularité de se baser sur l'interfacage windev via un langage externe...

Visitez donc le blog suivant : http://vroy1.free.fr/wpfr/ ou directement http://vroy1.free.fr/weelc/
Un plugin winamp est disponible, très interressant...

J'ai aussi regardé ces interfaces externes récemment, afin de les tester sous linux (afin de créer au final une extension PHP réellement multi-plateforme, du moins Windows/Linux)... J'avais effectué une extension similaire en Delphi pour PHP/WDScript

Cela fonctionne a peu près (vive le C, ou pas), mais on est sujet aux memes limitations du framework... raison de plus pour l'utiliser sur une base solide comme le PHP ou un autre langage... En bref : l'inverse de la génération PHP des versions récentes de Webdev... Afin de tirer parti de la sécurité de couple Apache/PHP

A Suivre ! Car l'interfacage HF explose pour le moment, uniquement sous linux...

Nouveautés Linux sur Wxxdev12 v55f

La version 12055f sortie ce 30 avril a apporté une nouveauté concernant Linux, bien qu'elle ne soit pas indiquée dans la liste des nouveautés de Windev. Depuis cette version, il est possible de choisir la version de la libc à utiliser (l'ancienne libstdc++ v2.1 (glibc) qui était auparavant nécessaire à tous les produits pcsoft linux ou la plus récente libstdc++.so.6 (chez moi libstdc++.so.6.0.10), installée quasiment en standard depuis quelques années).

WLScript GFX (NCurses)

Retour aux origines de Windev, je suis en train de concocter un plugin pour WLScript permettant l'affichage graphique en console, à la manière des installations Linux ou encore comme le logiciel aptitude.

wlscriptgfxm.png

WLSCRIPT v1.4

WLScript est un petit programme pour Linux qui permet de charger une WDL contenant classes ou fonctions afin d'executer du code windev en ligne de commande.
Via une classe et une librairie linux, ce projet complète les fonctions manquantes du framework Windev.
Il permet aussi de tester la compilation dynamique, qui ne fonctionne pas encore complétement sous Linux.

Voici les différents modes de fonctionnemment :

wlscript 1.3.x86 VM11.00Qd  
Usage: 
  Fonction globale : wlscript -f <filename.wdl> <function> [<param1> <param2> ...]
  Classe : wlscript -c <filename.wdl> <classe> <function> [<param1> <param2> ...]
  Fichier source : wlscript -s <filename.wl>
  Code direct : wlscript -d <code>

Rendez vous sur le forum pour en discuter...

WDScript 3 ?

Rappel : J'ai repris le projet WDScript de Michel Fages en 2001/2002 afin de l'étendre aux versions récentes de Windev (7 et +)

La version 2 de wdscript a introduit différentes nouveautés, plus ou moins efficaces, afin de palier à la lenteur de chargement du framework à chaque affichage de page...

J'ai comme projet de faire une version 3 de wdscript, optimisée avec les nouvelles possibilités de windev et qui pourra s'exécuter aussi sur linux...

Reprise du projet WDScript

Apres quelques années sans nouveautés (il suffisait de recompiler les sources de wdscript avec les nouvelles versions de windev) je reprends le projet afin de le rendre utilisable sous linux...

Pour plus d'informations, et en discuter, je vous donne rendez vous sur le nouveau forum wdscript : http://wdscript.ath.cx/bb/viewtopic.php?f=7&t=38277

Je fais face actuellement à un très gros probleme, présent dans les versions 11 (54b) et 12 (48g) de Windev : La fonction de compilation dynamique ne fonctionne pas correctement sous linux.

Syndiquer le contenu