Quelle est la différence entre Ruby 1.8 et Ruby 1.9
102
Je ne suis pas clair sur les différences entre la version "actuelle" de Ruby (1.8) et la "nouvelle" version (1.9). Existe-t-il une explication «facile» ou «simple» des différences et pourquoi elles sont si différentes?
Je suppose que vous voulez dire Ruby 1.8.6 - Ruby 1.8.7 a beaucoup de constructions de bibliothèques à partir de 1.9.
Andrew Grimm
De plus, je considère les versions 1.8 comme les "anciennes" versions, et 1.9.2+ les "actuelles". Je n'utilise que la version 1.8.7 pour les vérifications de compatibilité mais je développe en 1.9.2.
Dans l'intérêt de mettre ces informations en ligne pour une référence plus facile, et au cas où le lien disparaîtrait dans un avenir abstrait, voici un aperçu des diapositives de Sam. Le diaporama est moins fastidieux à examiner, mais tout présenter dans une liste comme celle-ci est également utile.
Ruby 1.9 - Principales fonctionnalités
Performance
Fils / Fibres
Encodage / Unicode
gems est (principalement) intégré maintenant
si les instructions n'introduisent pas de portée dans Ruby.
HTH == "J'espère que ça aide". J'ai dû chercher ça. Pouvez-vous m'indiquer une réponse que vous avez fournie, dans laquelle vous n'espériez pas qu'elle aiderait?
Chris Wesseling le
Ou vouliez-vous dire Heureux d'aider? Veuillez modifier en conséquence. Ou supprimez-le, si votre bonheur / espoir compte pour toutes vos réponses. ;-)
Chris Wesseling
10
Non, je vais le laisser tel quel. En pourcentage de la réponse totale, c'est minuscule et l'une ou l'autre des interprétations me convient. Merci.
Tim Sullivan
D'après le lien que vous avez fourni, le changement de délégation était un bogue et a été corrigé.
Kyle Strand
Qu'en est-il de l'incohérence entre "Range.include?" méthode? Ruby v1.8.7 donne un résultat différent de la v1.9
Lucas Pottersky
12
Une énorme différence serait le passage de l'interpréteur de Matz à YARV , une machine virtuelle bytecode qui améliore considérablement les performances.
Beaucoup recommandent maintenant le langage de programmation Ruby plutôt que la pioche - plus précisément, il contient tous les détails des différences 1.8 / 1.9.
Je les aime tous les deux. Le livre Pickaxe traite de certaines choses plus en détail, mais le langage de programmation Ruby est bon lorsque vous souhaitez rechercher rapidement quelque chose. C'est plus proche d'un livre «en bref».
The Tin Man
1
Quelques changements supplémentaires:
Retour d'un tableau de singleton splat:
def function
return*[1]end
a=function
rubis 1.9: [1]
rubis 1,8: 1
arguments de tableau
def function(array)
array.each {|v| p v }end
function "1"
rubis 1.8: "1"
ruby 1.9: méthode non définie `each 'pour" 1 ": chaîne
Réponses:
Sam Ruby a un diaporama sympa qui décrit les différences .
Dans l'intérêt de mettre ces informations en ligne pour une référence plus facile, et au cas où le lien disparaîtrait dans un avenir abstrait, voici un aperçu des diapositives de Sam. Le diaporama est moins fastidieux à examiner, mais tout présenter dans une liste comme celle-ci est également utile.
Ruby 1.9 - Principales fonctionnalités
Qu'est-ce qui a changé?
Chaînes de caractères uniques.
Rubis 1.9
Rubis 1.8.6
Index de chaîne.
Rubis 1.9
Rubis 1.8.6
{"a", "b"} Plus pris en charge
Rubis 1.9
Rubis 1.8.6
Action: convertir en {1 => 2}
Array.to_s
Contient maintenant la ponctuationRubis 1.9
Rubis 1.8.6
Action: utilisez plutôt .join
Colon n'est plus valide dans les déclarations When
Rubis 1.9
Rubis 1.8.6
Action: utilisez un point-virgule, puis ou une nouvelle ligne
Bloquer les variables maintenant Observer les variables locales
Rubis 1.9
Rubis 1.8.6
Hash.index
ObsolèteRubis 1.9
Rubis 1.8.6
Action: utilisez Hash.key
Fixnum.to_sym
Maintenant partiRubis 1.9
Rubis 1.8.6
(Suite) Rubis 1.9
svn.ruby-lang.org/repos/ruby/trunk/lib/rake.rb
Clés de hachage désormais non ordonnées
Rubis 1.9
Rubis 1.8.6
L'ordre est l'ordre d'insertion
Expressions régulières Unicode plus strictes
Rubis 1.9
Rubis 1.8.6
tr
etRegexp
maintenant comprendre UnicodeRubis 1.9
pack
etunpack
Rubis 1.8.6
BasicObject
Plus brutal queBlankSlate
Rubis 1.9
Rubis 1.8.6
Action: Utilisez :: Math :: PI
Changements de délégation
Rubis 1.9
Rubis 1.8.6
Défaut 17700L'utilisation de $ KCODE génère des avertissements
Rubis 1.9
Rubis 1.8.6
instance_methods
Maintenant un tableau de symbolesRubis 1.9
Rubis 1.8.6
Action: remplacez instance_methods.include? avec method_defined?
Encodage du fichier source
De base
Emacs
Case
Filetage réel
Quoi de neuf?
Syntaxe alternative pour le symbole en tant que clés de hachage
Rubis 1.9
Rubis 1.8.6
Bloquer les variables locales
Rubis 1.9
Méthodes d'injection
Rubis 1.9
Rubis 1.8.6
to_enum
Rubis 1.9
Pas de blocage? Enum!
Rubis 1.9
Sténographie Lambda
Rubis 1.9
Rubis 1.8.6
Nombres complexes
Rubis 1.9
La décimale n'est toujours pas la valeur par défaut
Rubis 1.9
Regex «Propriétés»
Rubis 1.9
Rubis 1.8.6
Splat au milieu
Rubis 1.9
Les fibres
Rubis 1.9
Casser les valeurs
Rubis 1.9
Méthodes "imbriquées"
Rubis 1.9
HTH!
la source
Une énorme différence serait le passage de l'interpréteur de Matz à YARV , une machine virtuelle bytecode qui améliore considérablement les performances.
la source
Beaucoup recommandent maintenant le langage de programmation Ruby plutôt que la pioche - plus précisément, il contient tous les détails des différences 1.8 / 1.9.
la source
Quelques changements supplémentaires:
Retour d'un tableau de singleton splat:
arguments de tableau
la source