IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sepi Discussion :

Mises à jour régulières de Sepi


Sujet :

Sepi

  1. #61
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    L'importeur a été amélioré. Désormais, il produit du code qui compile directement (plus d'erreur dans Menus.pas et SysUtils.pas). Et les unités non packagées ne sont plus importées, car de toutes façons inutiles dans Sepi, et il n'y a donc plus de warnings non plus.
    Revision: 287
    ----
    L'importeur produit du code correct pour les types comme TIntegerSet (set of X..Y), qui n'ont pas de RTTI en Delphi.

    Revision: 286
    ----
    Amélioration de l'importeur : les uses générées sont dans le bon ordre.

    Revision: 285
    ----
    - Les unités Ole2, OleCtl, OleDlg et Mtsobj ne sont plus importées, car Ole2 et Mtsobj ne sont pas packagées, et que de toutes façons elles n'ont rien à faire dans Sepi ;
    - L'importeur crée du code correct pour une méthode d'accès à une propriété dont les noms des paramètres ne sont pas les mêmes dans la méthode et dans la propriété.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  2. #62
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Support des ensembles vides ajouté.
    Revision: 288
    ----
    Support du typage tardif des ensembles, et donc des ensembles vides, et du typage tardif de n'importe quelle valeur en général.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #63
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Et voici un nouveau programme exemple : SepiExplorer. Celui-ci permet de charger des unités compilées (*.sci ou *.scu), et d'afficher leur contenu dans un arbre. La sélection d'un élément de l'arbre fait apparaître des informations détaillées à droite, sous forme textuelle.

    Ce n'est qu'une base : ce programme sera encore fort étendu, avec un peu plus de visuel, plus de contrôle sur ce qui est affiché (visibilité, type d'élément, etc.), et de la navigation hypertexte entre les meta.
    Il ne gère pas bien non plus les unités en lazy-load (comme Windows ou Controls), pour le moment.

    Vous devez commencer par renseigner avec le menu Options > Chemin de recherche le chemin vers les ressources Sepi (<Sepi>\resources\) et éventuellement celui des binaires de SepiDelphiCompiler (<Sepi>\bin\SepiDelphiCompiler\Binaries). Remplacez <Sepi> par le chemin vers Sepi (les $(SEPI) ne sont pas acceptés ici).

    Ensuite, vous utiliser Fichier > Charger une unité, indiquer son nom (ex. : SysUtils, ou Test). Cette unité est alors chargée, et le treeview est mis à jour.

    Vous n'avez plus qu'à admirer l'intérieur. Enjoy

    Ce programme utilise l'excellent composant tierce-partie TVirtualTreeview. Donc, si vous n'avez pas ce compo et que vous ne voulez pas l'installer (ce qui est bien dommage, il est vraiment top cool ), vous ne pourrez pas charger et compiler ce projet.
    Revision: 289
    ----
    Ajout d'un nouveau programme : SepiExplorer, qui permet de visualiser le contenu des unités Sepi compilées. Implémentation rudimentaire pour l'instant. Ce programme utilise TVirtualTreeview.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  4. #64
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    SepiExplorer montre maintenant le code désassemblé des méthodes compilées par Sepi. Très pratique pour le débogage

    Un certain nombre de corrections de bugs majeurs également. Les tests grandeur nature dans FunLabyrinthe ont commencé
    Revision: 299
    ----
    Correction de bug : while et repeat interchangés.

    Revision: 298
    ----
    Ajout d'une routine CompileDelphiSource dans SepiDelphiCompiler.pas.

    Revision: 297
    ----
    Corrections de bugs.

    Revision: 296
    ----
    Quelques modifications très très mineures.

    Revision: 295
    ----
    - L'explorateur Sepi affiche le code désassemblé des méthodes Sepi ;
    - Support de la compilation des appels de routine/méthode via des variables de type procédural ;
    - Corrections de bugs.

    Revision: 294
    ----
    GetModuleHandle(nil) remplacé par SysInit.HInstance dans le unités d'importation, pour pouvoir fonctionner dans des packages chargés dynamiquement.

    Revision: 293
    ----
    SepiImportsComObj.pas supprimé de SepiRTLCommonImport. Il y était resté par erreur.

    Revision: 292
    ----
    Revue du code pour tirer parti de la nouvelle classe TSepiSystemUnit.

    Revision: 291
    ----
    L'unité System est désormais de type TSepiSystemUnit. Cette classe ajoute des pointeurs directs vers tous les types de base.

    Revision: 290
    ----
    Modifications mineures dans MetaExplorer.pas.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  5. #65
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Quelques améliorations, dont une classe TSepiRootFork bien amusante, et le support complet des propriétés tableau par défaut.
    Revision: 305
    ----
    Support complet des propriétés tableau par défaut.

    Revision: 304
    ----
    Ajout d'un événement OnGetVarAddress dans TSepiUnit, pour que les variables Sepi puissent être liées aux variables natives Delphi.
    L'importeur a été adapté pour prendre en compte cette modification.

    Revision: 303
    ----
    Ajout de routines d'addition de points dans ScUtils.pas.

    Revision: 302
    ----
    Ajout d'une classe TSepiRootFork, qui permet de créer des forks de racines Sepi. Un fork de racine Sepi réutilise certaines unités déjà chargées dans une racine de base, et peut en charger d'autres et/ou charger des versions modifiées de ces unités dans le fork, sans que la racine de base ne soit modifiée.

    Revision: 301
    ----
    Correction d'un bug de MoreUses.

    Revision: 300
    ----
    Ajout d'un nouveau type de tâche TScCustomMethodTask/TScMethodTask dans ScSyncObjs.pas.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  6. #66
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Support complet des {$IF} et Co. Avec notamment les {$IF Defined(Something)} et {$IF Declared(Something)}. Les expressions complexes sont admises, du genre {$IF Declared(Something) and (SomeConst+2 = 5)}

    C'est assez drôle en fait de savoir comment ce truc fonctionne (enfin, moi je trouve ça drôle ). Parce que le pré-processeur a besoin de savoir des choses que seul l'analyseur sémantique sait, alors qu'il est à l'autre bout de la chaîne de compilation.

    Du coup, pour évaluer une conditon d'un {$IF}, le pré-processeur crée un noeud fictif qu'il insère dans le contexte de compilation courant. Et il crée un nouveau lexer et un nouveau parser sur ce noeud fictif, chargé d'évaluer l'expression.

    Pour permettre les Defined() et Declared(), c'est le pré-processeur lui-même qui ajoute deux pseudo-routines dans le ResolveIdent de son noeud fictif ^^

    Inutile de dire que tout ça serait impossible à imaginer même dans un compilateur large (car alors le pré-processeur doit avoir fini son boulot bien avant que l'analyseur sémantique n'ait même démarré : dur dur alors de lui demander des infos ). Donc je suis bien content d'être passé à un modèle de compilateur étroit.
    Revision: 312
    ----
    Mise à jour des différents programmes et scripts de test pour le support des {$IF} et Co.

    Revision: 311
    ----
    Oubli du commit précédent.

    Revision: 310
    ----
    - TSepiCustomParser peut analyser un code sur un noeud racine qui n'est pas un TSepiParseTreeRootNode ;
    - Quelques changements structurels dans SepiLL1ParserUtils.pas ;
    - Support complet des instructions du pré-processeur $IF, $ELSEIF, $IFEND, avec notamment les pseudo-routines Defined() et Declared() qui n'ont de sens que dans les conditions de ces tests.

    Revision: 309
    ----
    TSepiCustomLexer a une propriété Context qui peut être utilisée pour connaître/renseigner le noeud de l'arbre syntaxique en cours de construction.

    Revision: 308
    ----
    Nouvelle interface ISepiIdentifierTestPseudoRoutine dans SepiDelphiLikeCompilerUtils.pas, qui représente une pseudo-routine qui teste un identificateur. En Delphi existent Defined() et Declared(), utilisées dans des {$IF}.
    Quelques modifications mineures.

    Revision: 307
    ----
    Nouveau script SepiImportAlmostAll.bat qui importe tout sauf Types.pas et Windows.pas. Il est plus rapide, mais ne doit servir que pour des tests répététifs.

    Revision: 306
    ----
    Restructuration des analyseurs lexicaux et syntaxiques, avec deux nouvelles unités SepiLexerUtils.pas et SepiParserUtils.pas.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  7. #67
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut Sébastien,
    Citation Envoyé par sjrd
    C'est assez drôle en fait de savoir comment ce truc fonctionne (enfin, moi je trouve ça drôle ).
    Lire ceci fait tjr plaisir, bien que de mon coté techniquement je décroche sur ce type de sujet.
    Encore (et encore) bravo pour ta ténacité.

  8. #68
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Merci
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  9. #69
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Eh beh. Une belle quantité de révisions depuis la dernière fois.

    Au programme de cette mise à jour : grande rationalisation du compilateur, afin de factoriser un maximum de comportements de manière indépendante du compilateur.

    En effet, Sepi a quand même pour but de permettre de construire facilement des compilateurs pour de nouveaux langages adaptés à chaque application.

    Il a donc été nécessaire de factoriser le maximum de comportements communs à tous les compilateurs de façon indépendante du langage.
    Revision: 350
    ----
    - Résolution du bug de False qui valait True ;
    - Résolution de bugs d'AV dans TSepiConvertOperation ;
    - La majeure partie de TDelphiParametersNode a été généralisée dans TSepiParametersNode et TSepiDelphiLikeParametersNode ;
    - TSepiAddressOfOpNode prend en charge l'adressage d'une référence de méthode ;
    - Script de test remanié.

    Revision: 349
    ----
    - Factorisation des comportements communs à TSepiTypeOperationPseudoRoutine et TSepiCastPseudoRoutine dans deux classes TSepiValueBackedPseudoRoutine et TSepiOneParamValueBackedPseudoRoutine ;
    - Ajout d'une classe TSepiCastOrConvertPseudoRoutine ;
    - TDelphiParametersNode utilise TSepiCastOrConvertPseudoRoutine au lieu d'une méthode dédiée pour gérer les transtypages explicites.

    Revision: 348
    ----
    - TSepiCustomComputedValue.SetValueType désalloue la constante en cas de changement de type non compatible ;
    - Introduction d'un type spécifique au compilateur TSepiEmptySetType, pour représenter les ensembles vides non typés ;
    - TSepiSetBuilder utilise ce type tant qu'il est vide - il recalcule sa constante à chaque changement de type ;
    - ISepiValue.Finalize complètement supprimée, puisqu'elle n'avait de raison d'être que pour ces ensembles vides non typés.

    Revision: 347
    ----
    Emplois de System.TypeInfo dans SepiExpressions.pas remplacés par les champs de SystemUnit.

    Revision: 346
    ----
    ISepiCastPseudoRoutine et ISepiTypeOperationPseudoRoutine supprimées. Les classes TSepiCastPseudoRoutine et TSepiTypeOperationPseudoRoutine implémentent à la place ISepiWantingParams et ISepiReadableValue, ce qui apporte un comportement plus générique.

    Revision: 345
    ----
    Instructions d'assignations remplacées par une expression exécutable d'assignation.

    Revision: 344
    ----
    - ISepiCallable supprimée et remplacée par une interface plus générale ISepiWantingParams ;
    - Les paramètres de ISepiProperty et ISepiWantingParams sont de type ISepiExpression au lieu de ISepiValue ;
    - Ajout d'une interface ISepiExecutable qui représente une expression qui peut être exécutée ;
    - Suppression de l'instruction TSepiCall au profit d'une instruction TSepiExecuteExpression ;
    - Suppression de l'interface ISepiDirectValue.

    Revision: 343
    ----
    Correction d'un bug de TSepiVariable qui n'enregistrait pas sa propriété IsConst.

    Revision: 342
    ----
    Toutes les classes de SepiDelphiCompiler.pas ont été préfixées par TDelphi.

    Revision: 341
    ----
    La majeure partie de TUnaryOpNode a été factorisée vers SepiStdCompilerNodes.TSepiDelphiLikeUnaryOpNode et TSepiAddressOfOpNode.

    Revision: 340
    ----
    La majeure partie de TBinaryOpNode a été factorisée vers SepiStdCompilerNodes.TSepiDelphiLikeBinaryOpNode.

    Revision: 339
    ----
    - Les messages d'erreur impliquant des types utilisent DisplayName au lieu de Name ;
    - Compilation des paramètres d'une signature déplacée vers SepiStdCompilerNodes.pas ;
    - Compilation de l'implémentation d'une méthode déplacée vers SepiStdCompilerNodes.pas.

    Revision: 338
    ----
    TVisibilityNode factorisé vers SepiStdCompilerNodes.TSepiChangeVisibilityNode.

    Revision: 337
    ----
    TSetValueNode déplacé vers SepiStdCompilerNodes.TSepiSetValueNode.

    Revision: 336
    ----
    TPropertyNode et Co. factorisés vers SepiStdCompilerNodes.pas.

    Revision: 335
    ----
    TFieldNode déplacé vers SepiStdCompilerNodes.TSepiClassFieldNode.

    Revision: 334
    ----
    Gestion des méthodes et des redirecteurs de méthodes factorisée dans SepiStdCompilerNodes.pas.

    Revision: 333
    ----
    Le compilateur profite maintenant des informations de vie des variables locales pour les compacter, au moyen d'un algorithme de coloriage de graphe.

    Revision: 332
    ----
    Instructions try..except et try..finally factorisées dans SepiStdCompilerNodes.pas.

    Revision: 331
    ----
    Déplacement de TForInstructionNode vers SepiStdCompilerNodes.TSepiForInstructionNode et autres classes.

    Revision: 330
    ----
    Déplacement des noeuds d'instructions d'appel de méthode et d'assignation vers SepiStdCompilerNodes.pas.

    Revision: 329
    ----
    Déplacement des noeuds pour les instructions begin..end, liste d'instructions, if..then..else, while..do, repeat..until, raise vers SepiStdCompilerNodes.pas.

    Revision: 328
    ----
    - Quelques suppressions de code inutile de SepiDelphiCompiler.pas ;
    - Revue de la compilation d'un GUID d'interface.

    Revision: 327
    ----
    Ajout d'une propriété DisplayName dans TSepiMeta et d'une propriété Description dans TSepiType.

    Revision: 326
    ----
    TTypeDescNode et TTypeDescriptorNode remplacés par une seule classe TSepiTypeDefinitionNode.

    Revision: 325
    ----
    Factorisation de la construction des records et de leurs champs dans SepiStdCompilerNodes.pas.

    Revision: 324
    ----
    Généralisation de l'usage des IdentifierDecl dans la compilation des unités Delphi.

    Revision: 323
    ----
    Déplacement de TRoutineDeclNode vers SepiStdCompilerNodes.TSepiMethodDeclarationNode. Cette classe devra encore être étendue pour accepter les déclarations de méthodes en général (pas seulement les routines).

    Revision: 322
    ----
    TMethodKind remplacé par un nouveau type dédié TSepiSignatureKind.

    Revision: 321
    ----
    - Quelques constantes de SepiDelphiCompilerConsts.pas déplacées et renommées vers SepiReflectionCore.pas et SepiMembers.pas ;
    - Quelques classes supplémentaires dans SepiStdCompilerNodes.pas ;
    - TDelphiSourceNode supprimé, ainsi que les routines de StrToX de TRootNode ;
    - TInSignatureNode et TSignatureNode remplacés par TSepiSignatureBuilderNode.

    Revision: 320
    ----
    Avancement des factorisations de SepiDelphiCompiler.pas vers SepiStdCompilerNodes.pas.

    Revision: 319
    ----
    Début d'une rationalisation des noeuds des compilateurs, en factorisant un maximum de comportement commun entre tous les compilateurs dans SepiCompiler/SepiStdCompilerNodes.pas.

    Revision: 318
    ----
    Ajout de {$D-,L-} dans les analyseurs syntaxiques produits par SepiParserGenerator.

    Revision: 317
    ----
    Ajout d'une méthode TSepiType.Equals qui permet de tester si deux types sont exactement identiques, i.e. leurs valeurs ont la même structure interne.

    Revision: 316
    ----
    - Le compilateur Delphi utilise un TFormatSettings propre plutôt que de modifier DecimalSeparator ;
    - Prise en charge complète des directives de compilation {$MINEMUMSIZE} et {$Z}.

    Revision: 315
    ----
    Généralisation de SepiDelphiCompiler.CompileDelphiSource en SepiCompilerUtils.CompileSepiSource.

    Revision: 314
    ----
    TSepiCustomLexer ne fait plus tout seul NextTerminal dans son AfterConstruction.

    Revision: 313
    ----
    Déplacement de certaines fonctionnalités implémentées dans SepiDelphiCompiler.pas vers SepiParseTrees.pas et SepiCompilerUtils.pas.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  10. #70
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Quelques mises à jour dont la plus importante est le support des opérateurs is et as ainsi que l'instruction inherited sans nom derrière.
    Revision: 357
    ----
    TSepiUsesNode.IsRedeclared passée en virtual.

    Revision: 356
    ----
    Ajout de fonctions GetClass et FindClass dans TSepiRoot et TSepiUnit.

    Revision: 355
    ----
    Ajout du support des opérateurs is et as.

    Revision: 354
    ----
    Les importeurs d'unités natives sont dérecensés lorsque l'unité qui les définit est déchargée.

    Revision: 353
    ----
    Correction d'un bug dans TSepiAssignmentOpNode.

    Revision: 352
    ----
    Correction d'un bug en cas de recensement multiple d'une unité native.

    Revision: 351
    ----
    Ajout du support de l'instruction inherited; tout court - elle est même un peu plus puissante que celle de Delphi, car elle fonctionne aussi pour les fonctions.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  11. #71
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    TSepiMeta renommé en TSepiComponent, et tout ce qui va avec. J'ai enfin trouvé un nom correct pour ce concept
    Revision: 359
    ----
    Correction de bugs suite à des remplacements abusifs de TSepiMetaClass en TSepiComponentClass.

    Revision: 358
    ----
    Notion de "Meta" renommée en "Component".
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  12. #72
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Un certain nombre d'améliorations et de corrections de bugs, avec notamment :

    • Support des instructions case..of et with et de l'opérateur in ;
    • Support de l'évaluation court-circuit des opérateurs booléens and et or ;
    • Gestion complète et corrigée de la génération des RTTI d'une classe : les instances d'une classe Sepi peuvent être manipulées par un TJvInspector aussi bien que des instances de classe Delphi ;
    • Support de la directive de compilation {$INCLUDE}.

    Revision: 377
    ----
    Ajout du support des instructions case..of et with.

    Revision: 376
    ----
    Dans TCustomCoroutine, en cas d'exception, la coroutine est automatiquement remise à zéro (Reset) si c'est une coroutine à boucle (Loop <> clNoLoop).

    Revision: 375
    ----
    Correction d'un bug dans TSepiPropertyBuilder avec les propriétés accédant à des sous-propriétés de champs record.

    Revision: 374
    ----
    - Gestion complète des spécificateurs de stockage (stored) ;
    - Correction de la génération des RTTI des classes (NameIndex et PropCount) ;
    - Ajout du support de l'opérateur in ensembliste, et correction de bugs liés à la comparaisons d'ensembles ;
    - Prise en charge de l'évaluation en court-circuit des opérateurs booléens ;
    - Correction d'un bug de compilation et de compilation des opérations de sélection d'élément de tableau.

    Revision: 373
    ----
    - Correction de l'alignement des set of et des packed record ;
    - L'organisation des offsets attribués aux interfaces implémentées par les classes est maintenant compatible avec ce que fait le compilateur Delphi ;
    - Les programmes de SepiTools et SepiExamples sont compilés avec les paquets d'exécution ;
    - Les redirecteurs de méthodes d'interface sont maintenant sauvegardés, et rendus compatibles avec la spécification du Delphi ;
    - L'importeur d'unités ajoute du code de vérifications de cohérence entre les données calculées par Sepi et ce que produit en réalité le compilateur Delphi ;
    - Un code de débogage (non activé, par directive de compilation) a été ajouté dans SepiMembers.pas, qui a pour objectif de déterminer quand le compilateur Delphi place un trou de 4 octets en début des champs d'une classe - le fait que Sepi ne le fasse pas est actuellement un bug majeur.

    Revision: 372
    ----
    - Ajout d'une classe TSepiCustomCompositeLexer dans SepiLexerUtils.pas, qui fournit une base pour les analyseurs lexicaux composites ;
    - Le pré-processeur de l'analyseur lexical Delphi a été remplacé par un analyseur lexical composite ;
    - Ajout du support de la directive de compilation $INCLUDE.

    Revision: 371
    ----
    Les commentaires et blancs, dans les analyseurs lexicaux, ne sont plus "inexistants", mais sont des lexèmes comme les autres, qui sont cependant (par défaut) défaussés aussitôt analysés. Les LexingFuncs de TSepiCustomManualLexer ne renvoient donc plus de résultat.

    Revision: 370
    ----
    TSepiCustomLexer décomposée en deux classes héritant l'une de l'autre : TSepiBaseLexer qui hérite de TSepiCustomLexer. Le but de cette nouvelle classe parent TSepiCustomLexer est de n'introduire *aucun* comportement (pas même celui de connaître le source à analyser).

    Revision: 369
    ----
    Correction d'un bug de conversion de méta-classe vers méta-classe.

    Revision: 368
    ----
    Correction de deux petits bugs.

    Revision: 367
    ----
    - Correction d'un bug de gestion de {$IFDEF} imbriqués ;
    - Ajout du support d'une construction syntaxique obscure de valeur constante de record.

    Revision: 366
    ----
    Ajout d'une unité ScXML.pas dans la SCL avec quelques routines d'aide au traitement de XML, dont un encodeur/décodeur de flux en base 64.

    Revision: 365
    ----
    Les coroutines ont été complètement récrites pour fonctionner à base de threads communiquant par des événements, plutôt que par des switches réels de cadre de pile.

    Revision: 364
    ----
    La pile allouée par TCustomCoroutine est désormais allouée par plus grands morceaux, pour supporter les grands buffers (4096 o) souvent utilisés (ex. : Format).

    Revision: 363
    ----
    - Sémantique de SplitToken modifiée pour correspondre à ce qui est le plus souvent requis ;
    - Rationalisation des méthodes LookFor et LookForMember ;
    - Quelques nouvelles utilisation de TSepiMember à la place de TSepiComponent ;
    - TSepiMethodCall n'a plus qu'un constructeur avec un paramètre de type TSepiMethodBase.

    Revision: 362
    ----
    - Ajout de types TSepiContainerType et TSepiMember dans SepiReflectionCore.pas, et de TSepiInheritableContainerType dans SepiMembers.pas, pour factoriser davantage de comportements entre TSepiRecordType, TSepiInterface et TSepiClass ;
    - Ajout d'une classe TSepiLanguageRules dans SepiCompiler.pas, qui permet de centraliser de manière plus logique les règles sémantiques d'un langage compilé par Sepi.

    Revision: 361
    ----
    Passage à Delphi 2007 comme plate-forme principale de développement.

    Revision: 360
    ----
    Correction d'un bug des définitions du paramètre caché High des tableaux ouverts (Smallint remplacé par Integer).
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  13. #73
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Corrections de bugs, et ajout du support des valeurs par défaut des paramètres.
    Revision: 381
    ----
    Correction d'un bug dans TSepiInSetOperation.

    Revision: 380
    ----
    Support des valeurs par défaut des paramètres.

    Revision: 379
    ----
    Correction d'un bug des lazy-load.

    Revision: 378
    ----
    Correction d'un bug de TSepiRootFork survenant avec des forks en cascade (fork de fork).
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  14. #74
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Nouvelle mise à jour importante avec le support complet des tableaux ouverts. Donc il est maintenant (enfin) possible d'utiliser la fonction Format par exemple.
    Revision: 384
    ----
    Correction d'un bug dans TSepiSetOrOpenArrayBuilder.

    Revision: 383
    ----
    Ajout du support complet des tableaux ouverts.

    Revision: 382
    ----
    - Ajout de deux nouveaux types de données, TSepiUntypedType et TSepiOpenArrayType, pour représenter une donnée non typée et un tableau ouvert respectivement ;
    - Ajout de l'import de TVarRec comme type système, et une instance de TSepiUntypedType est aussi créée comme type système ;
    - TSepiParam utilise ces types de données à la place de reposer sur des valeurs nil qui sont douteuses à traiter ;
    - TSepiPointerType utilise TSepiUntypedType pour les pointeurs non typés (Pointer) ;
    - Ajout d'instructions assembleurs pour les longuers de chaînes et tableaux dynamiques, ainsi que pour la valeur High d'un tableau dynamique ;
    - Ajout du support des tableaux ouverts, mais "en général", pas avec la syntaxe en Delphi - on peut transmettre une valeur de type tableau (statique, dynamique ou ouvert) comme paramètre tableau ouvert.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  15. #75
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Ajout du support complet des fonctions standard Low, High, Length et SetLength, pour tableaux et chaînes de caractères.
    Revision: 387
    ----
    Ajout du support de la pseudo-routine SetLength, via les nouvelles instructions assembleur ASSL, WSSL et DASL.

    Revision: 386
    ----
    Les fonctions standard Low, High et Length supportent désormais les paramètres valeur tableau ou chaîne de caractères.

    Revision: 385
    ----
    Correction d'un bug dans TSepiOpenArrayType.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  16. #76
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Sepi est passé entièrement sous licence GPL v3 Classpath Exception.
    Revision: 388
    ----
    L'entièreté de Sepi passe sous licence GPL v3 Classpath Exception.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  17. #77
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Mise à jour majeure, avec support de Delphi 2009 et de l'Unicode. Le support de Delphi 2010 ne sera pas à l'ordre du jour jusqu'à ce que je dispose de cette version
    Revision: 445
    ----
    Backport des modifications faites en Delphi 2009 pour rétablir le support de Delphi 2007.

    Revisions: 392 to 444
    ----
    Ajout du support de Delphi 2009

    Revision: 391
    ----
    Ajout d'un mécanisme de contrôle de la compatibilité d'une unité utilisée, grâce à l'enregistrement des digests des composants utilisés.

    Revision: 390
    ----
    Ajout d'une propriété Digest dans TSepiComponent qui permettra de vérifier qu'un composant est resté compatible d'une compilation à l'autre.

    Revision: 389
    ----
    - Correction de quelques bugs dans ScCompilerMagic.pas et ScTypInfo.pas, qui se traduisaient notamment par des assignations de tableaux dynamiques non conformes aux spécifications du Delphi ;
    - Ajout du support de la pseudo-routine Copy, autant pour les chaînes de caractères que pour les tableaux dynamiques.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  18. #78
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Mise à jour avec le support complet des paramètres non typés (côté formel et côté réel).
    Revision: 452
    ----
    Correction du bug #783.

    Revision: 451
    ----
    Correction du bug #782.

    Revision: 450
    ----
    Ajout du support des numéros d'ère dans la comparaison de numéros de version.

    Revision: 449
    ----
    Ajout d'une fonction CompareVersion dans ScStrUtils.pas, qui compare des numéros de versions selon les spécifications de GNU.

    Revision: 448
    ----
    Correction du calcul de l'alignement d'un ensemble avec un compilateur >= 20 (Delphi 2009+).

    Revision: 447
    ----
    Changement dans le format des fichiers .gra : la première colonne d'une déclaration de non-terminal a été supprimée.

    Revision: 446
    ----
    Ajout d'une routine SplitTokenAll dans ScStrUtils.pas.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  19. #79
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Nouvelle mise à jour importante, avec :

    • Nombreuses corrections de bugs mineurs à graves ;
    • Grosses simplifications et harmonisations dans SepiReflection ;
    • Compatibilité avec Delphi 2010.

    Revision: 491
    ----
    Ajout de la propriété svn:ignore sur packages/140.

    Revision: 490
    ----
    Ajout d'une classe de type TSepiTextFileType pour le type Text, malgré qu'il n'est absolument pas supporté, pour que l'importeur puisse fonctionner correctement.

    Revision: 489
    ----
    Intégration dans le trunk de la branche branches/port2010/ (fin).

    Revision: 488
    ----
    Intégration dans le trunk de la branche branches/port2010/

    Revision: 480
    ----
    Suppression de tous les constructeurs de SepiReflection qui demandaient des PTypeInfo ou des noms de type en paramètre. Seuls ceux qui prenaient directement le type Sepi ont été conservées. En effet, les premières n'ont plus de raison d'être depuis que l'importeur d'unité est complètement basé sur le chargement des unités avec le constructeur Load.

    Revision: 479
    ----
    - Ajout des concepts de composite fort et de type prêt ;
    - Homogénéisation du système de déclaration forward ;
    - Rationalisation dans tous les types de SetupProperties.

    Revision: 478
    ----
    L'information contenue dans le champ TSepiType.FIsForward a été déplacée comme un nouvel état, msForward, du composant.

    Revision: 477
    ----
    Généralisation de l'idiome SetupProperties + MakeTypeInfo dans TSepiType. Le tout est beaucoup plus harmonieux et simple.

    Revision: 476
    ----
    Les déclarations de pointeur forward suivent désormais le même schéma que celles de classes ou interfaces forward, dans SepiReflection. Le compilateur s'adapte pour fonctionner selon ce schéma, malgré que la syntaxe Delphi ne le suit pas.

    Revision: 475
    ----
    La propriété Context de TSepiSignature a changé de sens, pour être dans tous les cas le contexte de la méthode propriétaire (que ce soit un type ou pas). Du coup, les TSepiOpenArrayType sont créés dans ce contexte, et plus dans le contexte de l'unité.

    Revision: 474
    ----
    L'idiome basé sur ExtractTypeData a été renversé pour un idiome basé sur MakeTypeInfo également dans les descendants de TSepiOrdType.

    Revision: 473
    ----
    Changement mineur dans SepiDelphiUnitImporter.dpr.

    Revision: 472
    ----
    Ajout de propriétés et méthodes dans TSepiComponent pour travailler facilement avec le nom du composant tel qu'enregistré dans des RTTI.

    Revision: 471
    ----
    L'idiome basé sur ExtractTypeData a été renversé pour un idiome basé sur MakeTypeInfo dans toutes les classes de type sauf les descendants de TSepiOrdType.

    Revision: 470
    ----
    Suppression des méthodes de déclarations forward avec des paramètres de type PTypeInfo.

    Revision: 469
    ----
    La propriété TSepiType.TypeInfoRef a été mise public.

    Revision: 468
    ----
    Suppression du constructeur TSepiType.RegisterTypeInfo, et de tout ce qui tournait autour. La création des types builtins de TSepiSystemUnit utilise donc le constructeur Create et non plus la méthode TSepiType.LoadFromTypeInfo.

    Revision: 467
    ----
    Correction d'un bug dans CompilerContext.pas.

    Revision: 466
    ----
    Suppression de pleins de trucs inutiles dans le package SepiCore, qui datent des premières tentatives de code de Sepi.

    Revision: 459
    ----
    Correction d'un bug du codegen.

    Revision: 458
    ----
    Ajout d'une classe TSepiUnitAlias qui représente un alias d'unité-s.

    Revision: 457
    ----
    Correction d'un bug grave de lecture d'une adresse mémoire dans l'interpréteur et le désassembleur Sepi.

    Revision: 456
    ----
    Encore une petite modification suite à la correction du bug #796.

    Revision: 455
    ----
    Correction du bug #796.

    Revision: 454
    ----
    Améliorations dans ScXML.pas :
    - Ajout de méthodes CreateXMLHeaderIfNotExists et IndentXMLDocument ;
    - Ajout d'un paramètre supplémentaire à SaveXMLDocumentToStream et SaveXMLDocumentToFile, Indent, pour indenter automatiquement le XML enregistré.

    Revision: 453
    ----
    Correction d'un bug de gestion de la vie des variables temporaires dans TSepiCustomDirectValue.CompileLoadAddress.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  20. #80
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Et voici (enfin) une mise à jour qui ne fait aucune erreur sur l'importation de la RTL+VCL, et qui ne produit aucun avertissement à la compilation du groupe de projet SepiImports.
    Revision: 510
    ----
    Correction d'un bug dans TSepiOpenArrayBuilder.

    Revision: 509
    ----
    Support de la directive de compilation $ALIGN ou $A.

    Revision: 508
    ----
    Support du champ déclaré dans le case of d'un record.

    Revision: 507
    ----
    Support des méthodes surchargées dans les interfaces.

    Revision: 506
    ----
    Support des propriétés dont un accesseur est une méthode surchargée.

    Revision: 505
    ----
    Support de l'auto déclaration forward de classe lorsqu'on déclare une métaclasse sur une classe qui n'est pas encore déclarée.

    Revision: 504
    ----
    Ajout de nouveaux passages dans OvldSource, qui éliminent l'affichage d'erreurs qu'il n'est pas prévu de corriger.

    Revision: 503
    ----
    Modification de la grammaire Delphi pour ne plus avoir d'erreur sur les attributs de type utilisés uniquement par le compilateur .NET.

    Revision: 502
    ----
    Implémentation des conversions avant et après cast dans TSepiCastOrConvertPseudoRoutine.

    Revision: 501
    ----
    Ajout de méthodes GetSystemType dans TSepiSystemUnit, qui trouvent un type système par défaut selon certains critères.

    Revision: 500
    ----
    TSepiPointerType n'hérite plus de TSepiOrdType mais directement de TSepiType.

    Revision: 499
    ----
    TSepiConvertOperation.ConvertionExists renommée en ConversionExists.

    Revision: 498
    ----
    Ajout du support des alias d'unité dans l'explorateur Sepi.

    Revision: 497
    ----
    Nouvelle refactorisation de la méthode utilisée pour créer les RTTI des types. Désormais, les RTTI sont écrites vers un flux, ce qui simplifie grandement le tout.

    Revision: 496
    ----
    Ajout d'une classe TMeasureStream dans ScClasses.pas, qui ne fait rien, à part mesurer la taille du flux nécessaire.

    Revision: 495
    ----
    Ajout dans ScTypInfo.pas de fonctions permettant de lire et écrire une chaîne de RTTI dans un stream.

    Revision: 494
    ----
    Correction d'une incohérence dans TSepiType.AllocateTypeInfo vis-à-vis du compilateur Delphi 2010.

    Revision: 493
    ----
    Ajout d'un paramètre à RunURL pour spécifier les paramètres de l'application.

    Revision: 492
    ----
    Correction d'un bug grave dans TSepiEnumType.MakeTypeInfo.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/08/2013, 16h24
  2. Réponses: 1
    Dernier message: 26/03/2009, 16h48
  3. Mise à jour de la version de MySQL
    Par jobstar dans le forum Administration
    Réponses: 8
    Dernier message: 18/08/2003, 10h45
  4. mise à jour de champs time (interbase)
    Par pram dans le forum XMLRAD
    Réponses: 6
    Dernier message: 04/03/2003, 10h25
  5. Réponses: 2
    Dernier message: 12/02/2003, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo