Ma hope o hoʻokahi makahiki o ka hoʻomohala ʻana i paʻiʻia hoʻokuʻu Ruby 2.7.0, he ʻōlelo hoʻolālā hoʻolālā hoʻoikaika i ka hoʻomohala papahana a hoʻokomo i nā hiʻohiʻona maikaʻi loa o Perl, Java, Python, Smalltalk, Eiffel, Ada a me Lisp. Hāʻawi ʻia ke code pāhana ma lalo o nā laikini BSD ("2-clause BSDL") a me "Ruby", e pili ana i ka mana hou loa o ka laikini GPL a kūpono loa me GPLv3. ʻO Ruby 2.7 ka hiku o ka hoʻokuʻu nui e hana ʻia ma ke ʻano o kahi kaʻina hoʻolālā i hoʻolālā ʻia e pili ana i ka hoʻokaʻawale ʻana i hoʻokahi makahiki no ka hoʻonui ʻana i nā hiʻohiʻona a me ka hoʻokuʻu ʻana i ka patch 2-3 mahina.
Hoʻokolohua kākoʻo hoʻolike like (Kūlike like) e hoʻololi i ka mea i hāʻawi ʻia a hāʻawi i kahi waiwai inā loaʻa kahi hoʻohālikelike.
hihia [0, [1, 2, 3]] i [a, [b, *c]] pa # => 0
pb # => 1
pc # => [2, 3] hopena
hihia {a: 0, b: 1}
i{a:0,x:1}
: hiki ole ke loaa
ma {a: 0, b: var}
p var # => 1
hopena
ʻO ka pūpū o nā helu helu irb (REPL, Read-Eval-Print-Loop) i kēia manawa ke hiki ke hoʻoponopono i nā laina he nui, i hoʻokō ʻia me ka waihona readline-compatible. laina, kākau ʻia ma Ruby. Ua hoʻohui pū ʻia ke kākoʻo rdoc, e ʻae iā ʻoe e ʻike i ka ʻike kuhikuhi ma nā papa i kuhikuhi ʻia, nā modules a me nā ʻano hana ma irb. Hāʻawi ʻia ka hōʻailona kala o nā laina o ke code i hōʻike ʻia ma o Binding#irb a me nā hopena o ka nānā ʻana i nā mea papa kumu.
Hoʻohui ʻia kahi ʻohi ʻōpala paʻa (Compaction GC) hiki ke hoʻokaʻawale i kahi ʻāpana o ka hoʻomanaʻo, e hoʻonā i ka hana a me ka hoʻohana ʻana i ka hoʻomanaʻo i hoʻokumu ʻia e ka puʻupuʻu hoʻomanaʻo i loaʻa i kekahi mau noi Ruby multi-threaded. E hoʻopili i nā mea ma ka puʻu noiʻi ʻia ʻO ke ala GC.compact, hiki iā ʻoe ke hōʻemi i ka nui o nā ʻaoʻao hoʻomanaʻo i hoʻohana ʻia a hoʻonui i ka puʻu no nā hana.
CoW (kope-ma-kākau).
Hana ʻia hoʻomākaukau e hoʻokaʻawale i nā manaʻo e pili ana i ke kūlana ma ka papa inoa ("def foo(a,b,c)") a me nā huaʻōlelo ("def foo(key: val)"). Ua hoʻopau ʻia ka hoʻololi hoʻopaʻapaʻa ʻokoʻa e pili ana i nā huaʻōlelo a me ke kūlana a ʻaʻole e kākoʻo ʻia ma ka lālā Ruby 3.0. ʻO ka mea nui, ua hoʻopau ʻia ka hoʻohana ʻana i ka hoʻopaʻapaʻa hope ma ke ʻano he huaʻōlelo huaʻōlelo, e hāʻawi i nā ʻōlelo hoʻopaʻapaʻa e pili ana i ka huaʻōlelo ma ke ʻano he palena hash hope, a e hoʻokaʻawale i ka hoʻopaʻapaʻa hope i nā ʻāpana kūlana a me nā huaʻōlelo.
h = {}; def foo(*a) a hope; foo(**h) # [] h = {}; def foo(a) a hope; foo(**h) # {} a me ka ʻōlelo aʻo
h = {}; def foo(*a) hope; foo(h) # [{}] h = {}; def foo(a) hopena; foo(h) # {}
He wā kūpono me ka hoʻohana ʻana i nā inoa hoʻololi paʻamau i helu ʻia no nā ʻāpana poloka.
[1, 2, 3].kekahi { kau i @1 } # like [1, 2, 3].kekahi { |i| kau i }
Kākoʻo hoʻokolohua no nā pae me ka waiwai ʻole.
ary[..3] # like me ary[0..3] rel.where(kūʻai: ..100)
Hoʻohui ʻia ke ʻano Enumerable#tally, e helu ana i ka nui o nā manawa e puka ai kēlā me kēia mea.
ʻAe ʻia e kāhea i kahi ʻano pilikino me ka "self" maoli
deffoo
hopena
pilikino :foo
self.foo
Hoʻohui ʻia ʻo Enumerator::Lazy#eager e hana i ka helu maʻamau mai ka palaualelo (Enumerator::Lazy).
a = %w(foo bar baz)
e = a.lazy.map {|x| x.upcase }.palapalapalapala {|x| x + "!" }.makemake
p e.class # => Heluhelu
p e.palapala honua {|x| x + "?" } # => ["FOO!?", "BAR!?", "BAZ!?"]
Ua hoʻomau ʻia ka hoʻomohala ʻana o kahi mea hōʻuluʻulu JIT hoʻokolohua, hiki ke hoʻomaikaʻi nui i ka hana o nā noi ma ka ʻōlelo Ruby. Ua kākau mua ʻo Ruby's JIT compiler i ka code C i ka disk, a laila kāhea i kahi mea hoʻopili C waho e hana i nā ʻōlelo kuhikuhi mīkini (kākoʻo i ke kāhea ʻana iā GCC, Clang, a me Microsoft VC++). Hoʻokomo ka mana hou i kahi ala no ka hoʻonohonoho inline inā pono, koho ʻia ka hoʻohana ʻana i nā mode optimization i ka wā o ka hōʻuluʻulu ʻana, hoʻonui ʻia ka waiwai paʻamau o "--jit-min-calls" mai 5 a 10000, a "--jit-max- cache” mai 1000 a 100 .
Hoʻomaikaʻi i ka hana o CGI.escapeHTML, Monitor a me MonitorMixin.
Module#name, true.to_s, false.to_s, and nil.to_s e hōʻoia i ka hoʻihoʻi ʻia ʻana o kahi kaula i hoʻololi ʻole ʻia no ka mea i kuhikuhi ʻia.
Ua hōʻemi ʻia ka nui o nā faila binary i hana ʻia e ka RubyVM::InstructionSequence#to_binary;
Nā mana hou o nā ʻāpana i kūkulu ʻia, me
Pūʻulu 2.1.2, RubyGems 3.1.2,
Racc 1.4.15,
CSV 3.1.2, REXML 3.2.3,
RSS 0.2.8,
Nānā Hana Hana 1.0.3;
Ua neʻe nā hale waihona puke mai ka hoʻohele kumu i nā pūʻolo gem waho
ʻO CMath (ka pōhaku makamae),
ʻO Scanf (scanf gem),
ʻO ka pūpū (shell gem)
ʻO ka mea hoʻoponopono (hoʻohui i nā pōhaku),
ThreadsWait (thwait gem),
E2MM (e2mmap gem).
Hoʻopuka ʻia nā modula stdlib paʻamau ma rubygems.org:
pae ʻāina,
cgi,
ʻelele
hoʻomaka,
upena pop,
net smtp,
wehe3,
hale kūʻai,
singleton. ʻAʻole i neʻe ʻia nā modules i rubygems.org
mea nānā,
manawa hoʻomaha
mea hōʻailona
uri,
yaml, i hoʻouna wale ʻia me ka ruby-core.
Ke kūkulu nei ʻo Ruby i kēia manawa e koi i kahi mea hoʻopili C e kākoʻo ana i ka maʻamau C99.