et pas un langage derive de JavaScript, du javascript quoi
Le but était de trouver un langage à prototype compilé. JScript.NET en est un, il est compilable, CQFD.
donne moi le code natif (archi de ton choix), du bout de code suivant:
Super, je vais pas te donner tout le code généré par le compilateur.
Mais si tu regardes l'implémentation de eval dans Microsoft.JScript.dll tu verras qu'il génère dynamiquement du code IL (bycode donc). Ce bytecode est traité après de manière classique par le CLR, et donc compilé en code natif à la volée avant exécution.
Mon petit doigt me dit que tu vas devoir embarquer un bout de code natif tellement gros qu'on pourra aisement qualifier ton binaire de VM compilant un code inexecutable tel quel, et donc le placer dans la categorie des langages non compile nativement.
Oui, celà nécessite un runtime qui s'occupe d'implémenter eval, n'en reste pas moins que le code est tôt ou tard compilé en code natif avant exécution (plutôt tard pour le cas de eval).
Apres, tu peux te limiter a subset du langage, comme Mono le fait si j'en crois le site web. Ca ne supporte d'ailleurs pas les generics, c'est ballot quand meme
2 choses :
- cette limitation s'applique à l'AOT pour Mono 2.0. En mode JIT, qui reste de la compilation sans aucune interprétation, les generics sont totalement supportés.
- cette limitation n'existe plus dans les version plus récentes, Mono 2.0, c'est vieux.
mais c'est surement aussi parce que je connais deja lisaac , ca genere du C derriere, donc j'ai naturellement fait l'association compiler = compiler nativement.
Bah oué tu vois j'ai fais le même raisonnement que toi : c'est sûrement aussi parcque je connais déjà JScript.NET, ca génère du code IL derrière, donc j'ai naturellement fait l'association compiler = compiler nativement.
D'aucuns considerent qu'une compilation a la volee en prerequis exlue d'emblee pour le qualificatif "compilation native", et quelque part, c'est dur de leur donner tord.
Le but de la compilation à la volée est avant tout de produire du code natif exécutable, c'est quand même extrêment osé de dire que la technique de JIT n'est pas de la compilation native.
Faut pas déconner, c'est dans le premier paragraphe de la définition de JIT sur Wikipedia : " It converts code at runtime prior to executing it natively, for example bytecode into native machine code. "
Ensuite le soucis vient d'une fonction, eval. Aucun doute que si Lisaac avait l'équivalent ils n'auraient d'autre choix que de faire de la compilation à la volée.
En fait il aurait fallu remplacer : Lisaac est le seul langage à prototype compilé.
par
Lisaac est le seul langage à prototype compilé en code natif statiquement avec exécution qui n'offre pas de fonction de type eval.
[^] # Re: Surprise
Posté par TImaniac (site web personnel) . En réponse au journal Lisaac: sorti de la 0.39beta. Évalué à -1.
Le but était de trouver un langage à prototype compilé. JScript.NET en est un, il est compilable, CQFD.
donne moi le code natif (archi de ton choix), du bout de code suivant:
Super, je vais pas te donner tout le code généré par le compilateur.
Mais si tu regardes l'implémentation de eval dans Microsoft.JScript.dll tu verras qu'il génère dynamiquement du code IL (bycode donc). Ce bytecode est traité après de manière classique par le CLR, et donc compilé en code natif à la volée avant exécution.
Mon petit doigt me dit que tu vas devoir embarquer un bout de code natif tellement gros qu'on pourra aisement qualifier ton binaire de VM compilant un code inexecutable tel quel, et donc le placer dans la categorie des langages non compile nativement.
Oui, celà nécessite un runtime qui s'occupe d'implémenter eval, n'en reste pas moins que le code est tôt ou tard compilé en code natif avant exécution (plutôt tard pour le cas de eval).
Apres, tu peux te limiter a subset du langage, comme Mono le fait si j'en crois le site web. Ca ne supporte d'ailleurs pas les generics, c'est ballot quand meme
2 choses :
- cette limitation s'applique à l'AOT pour Mono 2.0. En mode JIT, qui reste de la compilation sans aucune interprétation, les generics sont totalement supportés.
- cette limitation n'existe plus dans les version plus récentes, Mono 2.0, c'est vieux.
mais c'est surement aussi parce que je connais deja lisaac , ca genere du C derriere, donc j'ai naturellement fait l'association compiler = compiler nativement.
Bah oué tu vois j'ai fais le même raisonnement que toi : c'est sûrement aussi parcque je connais déjà JScript.NET, ca génère du code IL derrière, donc j'ai naturellement fait l'association compiler = compiler nativement.
D'aucuns considerent qu'une compilation a la volee en prerequis exlue d'emblee pour le qualificatif "compilation native", et quelque part, c'est dur de leur donner tord.
Le but de la compilation à la volée est avant tout de produire du code natif exécutable, c'est quand même extrêment osé de dire que la technique de JIT n'est pas de la compilation native.
Faut pas déconner, c'est dans le premier paragraphe de la définition de JIT sur Wikipedia :
" It converts code at runtime prior to executing it natively, for example bytecode into native machine code. "
Ensuite le soucis vient d'une fonction, eval. Aucun doute que si Lisaac avait l'équivalent ils n'auraient d'autre choix que de faire de la compilation à la volée.
En fait il aurait fallu remplacer :
Lisaac est le seul langage à prototype compilé.
par
Lisaac est le seul langage à prototype compilé en code natif statiquement avec exécution qui n'offre pas de fonction de type eval.