Itusilẹ ti ede siseto Ruby 3.1

Ruby 3.1.0 ti tu silẹ, ede siseto ohun ti o ni agbara ti o munadoko pupọ ni idagbasoke eto ati ṣafikun awọn ẹya ti o dara julọ ti Perl, Java, Python, Smalltalk, Eiffel, Ada ati Lisp. Koodu ise agbese ti pin labẹ BSD ("2-clause BSDL") ati awọn iwe-aṣẹ "Ruby", eyiti o tọka si ẹya tuntun ti iwe-aṣẹ GPL ati pe o ni ibamu ni kikun pẹlu GPLv3.

Awọn ilọsiwaju akọkọ:

  • Atunyẹwo tuntun ninu ilana JIT alakojo, YJIT, ti ṣafikun, ti a ṣẹda nipasẹ awọn olupilẹṣẹ ti Shopify e-commerce Syeed gẹgẹbi apakan ti ipilẹṣẹ lati mu ilọsiwaju iṣẹ ti awọn eto Ruby ti o lo ilana Rails ati pe awọn ọna pupọ. Iyatọ bọtini lati inu akopọ MJIT JIT ti a ti lo tẹlẹ, eyiti o da lori sisẹ gbogbo awọn ọna ati lilo olupilẹṣẹ itagbangba ni ede C, ni pe YJIT nlo Lazy Basic Block Versioning (LBBV) ati pe o ni akopọ JIT ti a ṣepọ. Pẹlu LBBV, JIT kọkọ ṣajọ nikan ni ibẹrẹ ọna naa, ati pe o ṣajọ iyoku ni akoko diẹ lẹhinna, lẹhin ti awọn iru awọn oniyipada ati awọn ariyanjiyan ti a lo ti pinnu lakoko ipaniyan. Nigbati o ba nlo YJIT, 22% ilosoke ninu iṣẹ ni a gbasilẹ nigbati o nṣiṣẹ idanwo railsbench, ati 39% ilosoke ninu idanwo omi-omi. YJIT lọwọlọwọ ni opin si atilẹyin fun awọn OSes unix-like lori awọn ọna ṣiṣe pẹlu faaji x86-64 ati pe o jẹ alaabo nipasẹ aiyipada (lati muu ṣiṣẹ, pato asia “--yjit” ni laini aṣẹ).
  • Imudara iṣẹ ti atijọ MJIT JIT alakojo. Fun awọn iṣẹ akanṣe nipa lilo Rails, iwọn kaṣe ti o pọju aiyipada (--jit-max-cache) ti pọ lati awọn ilana 100 si 10000. Da lilo JIT fun awọn ọna pẹlu diẹ ẹ sii ju 1000 ilana. Lati ṣe atilẹyin Zeitwerk ti Rails, koodu JIT ko jẹ asonu mọ nigbati TracePoint ti ṣiṣẹ fun awọn iṣẹlẹ kilasi.
  • O pẹlu debug.gem debugger ti a tun kọwe patapata, eyiti o ṣe atilẹyin fun n ṣatunṣe aṣiṣe latọna jijin, ko fa fifalẹ ohun elo ti n ṣatunṣe aṣiṣe, ṣe atilẹyin isọpọ pẹlu awọn atọkun n ṣatunṣe aṣiṣe to ti ni ilọsiwaju (VSCode ati Chrome), le ṣee lo fun ṣiṣatunṣe ọpọlọpọ-asapo ati awọn ohun elo ilana pupọ, pese ni wiwo ipaniyan koodu REPL, nfunni awọn agbara wiwa kakiri ti ilọsiwaju, le gbasilẹ ati tun ṣe awọn snippets koodu. Atunṣe ti a nṣe tẹlẹ lib/debug.rb ti yọkuro lati pinpin ipilẹ.
    Itusilẹ ti ede siseto Ruby 3.1
  • Ṣiṣe afihan wiwo ti awọn aṣiṣe ninu awọn ijabọ itọpa ipe pada. Aṣiṣe ti asia ti pese nipa lilo itumọ-sinu ati aiyipada-sise package gem error_highlight. Lati mu ifasilẹ aṣiṣe kuro, o le lo eto “--disable-error_highlight”. idanwo ruby.rb.rb:1:in" ": undefined ọna "akoko" fun 1: Integer (NoMethodError) 1.time {} ^^^^^ Se o tumo si? igba
  • Ikarahun ti awọn iṣiro ibaraenisepo IRB (REPL, Read-Eval-Print-Loop) n ṣe ipari adaṣe ti koodu ti a tẹ (bi o ṣe tẹ, ofiri kan han pẹlu awọn aṣayan fun titẹ sii tẹsiwaju, laarin eyiti o le gbe pẹlu Taabu tabi Shift + Bọtini taabu). Lẹhin yiyan aṣayan itesiwaju, apoti ifọrọranṣẹ kan wa nitosi ti o ṣafihan iwe ti o ni nkan ṣe pẹlu ohun ti o yan. Ọna abuja keyboard Alt+d le ṣee lo lati wọle si iwe ni kikun.
    Itusilẹ ti ede siseto Ruby 3.1
  • Sintasi ede ni bayi ngbanilaaye awọn iye ni awọn ọrọ gangan hash ati awọn ariyanjiyan koko lati fo nigba pipe awọn iṣẹ. Fun apẹẹrẹ, dipo ikosile "{x: x, y: y}" o le ṣe pato "{x:, y:}", ati dipo "foo(x: x, y: y)" - foo( x:, y:)".
  • Atilẹyin iduroṣinṣin fun awọn ibaamu ilana ila-kan (ary => [x, y, z]), eyiti ko ṣe afihan bi adanwo.
  • Oniṣẹ "^" ni awọn ibaamu ilana le ni awọn ọrọ lainidii ninu, fun apẹẹrẹ: Prime.each_cons(2) .lazy.find_all{_1 ninu [n, ^ (n + 2)]} .mu (3).to_a #= > ? [[3, 5], [5, 7], [11, 13]
  • Ninu awọn ibaamu ilana ila kan, o le fi awọn akọmọ silẹ: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Ede asọye iru RBS, eyiti o fun ọ laaye lati pinnu eto ti eto naa ati awọn oriṣi ti a lo, ti ṣafikun atilẹyin fun asọye iwọn oke ti awọn aye iru nipa lilo aami “<”, atilẹyin afikun fun awọn inagijẹ ti awọn oriṣi jeneriki, atilẹyin imuse fun awọn akojọpọ fun iṣakoso awọn fadaka, iṣẹ ilọsiwaju ati imuse ọpọlọpọ awọn ibuwọlu tuntun fun awọn ile-ikawe ti a ṣe sinu ati boṣewa.
  • Atilẹyin esiperimenta fun awọn agbegbe idagbasoke iṣọpọ ni a ti ṣafikun si iru atunnkanka TypePro aimi, eyiti o ṣe agbekalẹ awọn asọye RBS ti o da lori itupalẹ koodu laisi iru alaye ti o han gbangba (fun apẹẹrẹ, a ti pese afikun kan fun iṣọpọ TypePro pẹlu olootu VSCode).
  • Ilana sisẹ awọn iṣẹ iyansilẹ lọpọlọpọ ti yipada. Fun apẹẹrẹ, ni iṣaaju awọn paati ti ikosile “foo[0], bar[0] = baz, qux” ni a ṣe ilana ni aṣẹ baz, qux, foo, bar, ṣugbọn ni bayi foo, bar, baz, qux.
  • Atilẹyin esiperimenta ti a ṣafikun fun ipin iranti fun awọn okun nipa lilo ẹrọ VWA (Ayipada Width Allocation).
  • Awọn ẹya imudojuiwọn ti awọn modulu tiodaralopolopo ti a ṣe sinu ati awọn ti o wa ninu ile-ikawe boṣewa. net-ftp, net-imap, net-pop, net-smtp, matrix, prime ati awọn idii yokokoro ti wa ni itumọ ti inu.

orisun: opennet.ru

Fi ọrọìwòye kun