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

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 !

La version 3.3 du langage de programmation Ruby est disponible
Avec un nouvel analyseur "Prism" et un compilateur JIT purement Ruby

Le , par Jade Emy

102PARTAGES

4  0 
Ruby 3.3 est une mise � jour importante de ce langage de programmation open-source dynamique. Ruby 3.3 int�gre l'analyseur Prism ainsi qu'un nouveau compilateur juste � temps (JIT) purement Ruby.

Ruby 3.3 apporte avec lui l'analyseur Prism, un analyseur de descente r�cursive portable, tol�rant aux erreurs et facile � maintenir. Prism est consid�r� comme pr�t pour la production et peut �tre utilis� d�s maintenant � la place de l'analyseur Ripper.

Ruby 3.3 ajoute �galement RJIT en tant que compilateur purement Ruby pour remplacer MJIT. Pour l'instant, RJIT ne supporte que x86_64 sur les architectures de type Unix et n'est consid�r� que comme exp�rimental. Bien que RJIT soit int�ressant, il n'est pas encore pr�t pour la production et il est recommand� aux utilisateurs d'utiliser le compilateur YJIT. Avec cette version 3.3 de Ruby, YJIT a re�u de nombreuses am�liorations en termes de performances, d'utilisation de la m�moire et d'autres am�liorations qui rendent ce compilateur JIT bien meilleur que les versions pr�c�dentes.

Ruby 3.3 utilise �galement Lrama comme g�n�rateur d'analyseur syntaxique en remplacement de Bison, le planificateur de threads M:N a �t� introduit, et il y a une vari�t� d'autres am�liorations de performance telles que le ramasse-miettes de Ruby.

https://youtu.be/dEZlGGKHpl4

[QUOTE]
Sortie de Ruby 3.3.0

Nous avons le plaisir d'annoncer la sortie de Ruby 3.3.0. Ruby 3.3 ajoute un nouvel analyseur nomm� Prism, utilise Lrama comme g�n�rateur d'analyseur, ajoute un nouveau compilateur JIT pur-Ruby nomm� RJIT, et de nombreuses am�liorations de performance, en particulier YJIT.

Prism

  • Introduction de l'analyseur Prism comme gem par d�faut
    • Prism est un analyseur de descente r�cursive portable, tol�rant aux erreurs et maintenable pour le langage Ruby.
  • Prism est pr�t pour la production et activement maintenu, vous pouvez l'utiliser � la place de Ripper
    • Il existe une documentation compl�te sur l'utilisation de Prism.
    • Prism est � la fois une biblioth�que C qui sera utilis�e en interne par CRuby et une gem Ruby qui peut �tre utilis�e par n'importe quel outil qui a besoin d'analyser du code Ruby.
    • Les m�thodes notables de l'API Prism sont :
      • Prism.parse(source) qui retourne l'AST en tant que partie d'un objet de r�sultat d'analyse.
      • Prism.parse_comments(source) qui retourne les commentaires
      • Prism.parse_success ?(source) qui retourne vrai s'il n'y a pas d'erreurs.

  • Vous pouvez faire des pull requests ou des issues directement sur le d�p�t Prism pour contribuer.
  • Vous pouvez maintenant utiliser ruby --parser=prism ou RUBYOPT="--parser=prism" pour exp�rimenter le compilateur Prism. � noter que ce drapeau n'est utilis� que pour le d�bogage.


Utilisation de Lrama au lieu de Bison

  • Remplacement de Bison par le g�n�rateur d'analyseur LALR de Lrama
    • Si vous �tes int�ress�, veuillez consulter La vision future de l'analyseur Ruby
    • L'analyseur interne de Lrama est remplac� par l'analyseur LR g�n�r� par Racc pour des raisons de maintenabilit�.
    • Les r�gles de param�trage ( ?, *, +) sont support�es, elles seront utilis�es dans Ruby parse.y



YJIT

  • Am�liorations majeures des performances par rapport � Ruby 3.2
    • La prise en charge des arguments splat et rest a �t� am�lior�e.
    • Des registres sont allou�s pour les op�rations de pile de la machine virtuelle.
    • Plus d'appels avec des arguments optionnels sont compil�s. Les gestionnaires d'exception sont �galement compil�s.
    • Les types d'appels non pris en charge et les sites d'appels m�gamorphiques ne sortent plus vers l'interpr�teur.
    • Les m�thodes de base comme Rails #blank? et les m�thodes sp�cialis�es #present? sont int�gr�es.
    • Integer#*, Integer#!=, String#!=, String#getbyte, Kernel#block_given?, Kernel#is_a?, Kernel#instance_of?, et Module#=== sont sp�cialement optimis�s.
    • La vitesse de compilation est d�sormais l�g�rement sup�rieure � celle de Ruby 3.2.
    • Plus de 3 fois plus rapide que l'interpr�teur sur Optcarrot !
  • Utilisation de la m�moire consid�rablement am�lior�e par rapport � Ruby 3.2
    • Les m�tadonn�es du code compil� utilisent beaucoup moins de m�moire.
    • --yjit-call-threshold est automatiquement augment� de 30 � 120 lorsque l'application a plus de 40 000 ISEQs.
    • --yjit-cold-threshold est ajout� pour ne pas compiler les ISEQs froides.
    • Un code plus compact est g�n�r� sur Arm64.
  • Le GC du code est maintenant d�sactiv� par d�faut
    • --yjit-exec-mem-size est trait� comme une limite stricte o� la compilation du nouveau code s'arr�te.
    • Pas de chute soudaine des performances due au GC de code. Meilleur comportement du copy-on-write sur les serveurs reforking avec Pitchfork.
    • Vous pouvez toujours activer le GC de code si vous le souhaitez avec --yjit-code-gc
  • Ajout de RubyVM::YJIT.enable qui permet d'activer YJIT � l'ex�cution.
    • Vous pouvez d�marrer YJIT sans modifier les arguments de la ligne de commande ou les variables d'environnement. Rails 7.2 activera YJIT par d�faut en utilisant cette m�thode.
    • Cela peut aussi �tre utilis� pour activer YJIT seulement une fois que votre application a fini de d�marrer. --yjit-disable peut �tre utilis� si vous souhaitez utiliser d'autres options YJIT tout en d�sactivant YJIT au d�marrage.
  • D'autres statistiques YJIT sont disponibles par d�faut
    • yjit_alloc_size et plusieurs autres statistiques li�es aux m�tadonn�es sont maintenant disponibles par d�faut.
      La statistique ratio_in_yjit produite par --yjit-stats est maintenant disponible dans les versions release, une version sp�ciale stats ou dev n'est plus n�cessaire pour acc�der � la plupart des statistiques.
  • Ajout de capacit�s de profilage
    • --yjit-perf est ajout� pour faciliter le profilage avec Linux perf.
    • --yjit-trace-exits supporte maintenant l'�chantillonnage avec --yjit-trace-exits-sample-rate=N
  • Tests plus approfondis et corrections de bogues multiples


RJIT

  • Introduction d'un compilateur JIT purement Ruby, RJIT, qui remplace MJIT.
    • RJIT ne supporte que l'architecture x86-64 sur les plateformes Unix.
    • Contrairement � MJIT, il ne n�cessite pas de compilateur C � l'ex�cution.
  • RJIT n'existe qu'� des fins exp�rimentales.
    • Vous devriez continuer � utiliser YJIT en production.
  • Si vous �tes int�ress� par le d�veloppement de JIT pour Ruby, vous pouvez consulter la pr�sentation de k0kubun lors de la troisi�me journ�e de RubyKaigi.


Planificateur de threads M:N

  • Le planificateur de threads M:N a �t� introduit.

    • M threads Ruby sont g�r�s par N threads natifs (threads OS), ce qui r�duit les co�ts de cr�ation et de gestion des threads.
    • La compatibilit� avec l'extension C peut �tre rompue, de sorte que le planificateur de threads M:N est d�sactiv� par d�faut sur le Ractor principal.
      • La variable d'environnement RUBY_MN_THREADS=1 active les threads M:N sur le Ractor principal.
      • Les threads M:N sont toujours activ�s sur les Ractors non principaux.
    • La variable d'environnement RUBY_MAX_CPU=n d�finit le nombre maximum de N (nombre maximum de threads natifs). La valeur par d�faut est 8.

      • Comme un seul thread Ruby par Ractor peut fonctionner en m�me temps, le nombre de threads natifs utilis� sera le plus petit entre le nombre sp�cifi� dans RUBY_MAX_CPU et le nombre de Ractors en cours d'ex�cution. Ainsi, les applications � un seul Ractor (la plupart des applications) n'utiliseront qu'un seul thread natif.
      • Pour prendre en charge les op�rations de blocage, plus de N threads natifs peuvent �tre utilis�s.




Am�lioration des performances

[LIST][*]defined ?(@ivar) est optimis� avec les formes d'objets.

[*]La...[/*]
La fin de cet article est r�serv�e aux abonn�s. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer � vous proposer des publications.

Une erreur dans cette actualit� ? Signalez-nous-la !