Ruby programmēšanas valodas 3.1 izlaišana

Ir izlaista Ruby 3.1.0 — dinamiska objektorientēta programmēšanas valoda, kas ir ļoti efektīva programmu izstrādē un ietver Perl, Java, Python, Smalltalk, Eiffel, Ada un Lisp labākās iespējas. Projekta kods tiek izplatīts saskaņā ar BSD ("2 klauzulu BSDL") un "Ruby" licencēm, kas attiecas uz jaunāko GPL licences versiju un ir pilnībā savietojams ar GPLv3.

Galvenie uzlabojumi:

  • Ir pievienots jauns eksperimentāls procesā JIT kompilators YJIT, ko izveidojuši Shopify e-komercijas platformas izstrādātāji kā daļu no iniciatīvas, lai uzlabotu Ruby programmu veiktspēju, kas izmanto Rails ietvaru un izsauc daudzas metodes. Galvenā atšķirība no iepriekš izmantotā MJIT JIT kompilatora, kas balstās uz visu metožu apstrādi un izmanto ārēju kompilatoru C valodā, ir tā, ka YJIT izmanto Lazy Basic Block Versioning (LBBV) un satur integrētu JIT kompilatoru. Izmantojot LBBV, JIT vispirms apkopo tikai metodes sākumu, bet pārējo kompilē pēc kāda laika, pēc tam, kad izpildes laikā ir noteikti izmantoto mainīgo un argumentu veidi. Izmantojot YJIT, sliežu stenda testā tika reģistrēts veiktspējas pieaugums par 22%, bet šķidruma apmetuma testā - par 39%. YJIT pašlaik ir ierobežots, lai atbalstītu unix līdzīgas operētājsistēmas sistēmās ar x86-64 arhitektūru, un pēc noklusējuma tas ir atspējots (lai aktivizētu, komandrindā norādiet karodziņu “--yjit”).
  • Uzlabota vecā MJIT JIT kompilatora veiktspēja. Projektiem, kuros izmanto Rails, noklusējuma maksimālais kešatmiņas lielums (--jit-max-cache) ir palielināts no 100 līdz 10000 1000 instrukcijām. Pārtraukts izmantot JIT metodēm ar vairāk nekā XNUMX instrukcijām. Lai atbalstītu Zeitwerk of Rails, JIT kods vairs netiek atmests, kad TracePoint ir iespējots klases pasākumiem.
  • Tas ietver pilnībā pārrakstītu debug.gem atkļūdotāju, kas atbalsta attālo atkļūdošanu, nepalēnina atkļūdotās lietojumprogrammas darbību, atbalsta integrāciju ar uzlabotām atkļūdošanas saskarnēm (VSCode un Chrome), var izmantot vairāku pavedienu un vairāku procesu lietojumprogrammu atkļūdošanai, nodrošina REPL koda izpildes saskarne, piedāvā uzlabotas izsekošanas iespējas, var ierakstīt un atskaņot koda fragmentus. Iepriekš piedāvātais atkļūdotājs lib/debug.rb ir noņemts no bāzes izplatīšanas.
    Ruby programmēšanas valodas 3.1 izlaišana
  • Ieviesta kļūdu vizuāla izcelšana atzvanīšanas izsekošanas atskaitēs. Kļūdu atzīmēšana tiek nodrošināta, izmantojot iebūvēto un noklusējuma iespējoto dārgakmens pakotni error_highlight. Lai atspējotu kļūdu atzīmēšanu, varat izmantot iestatījumu “--disable-error_highlight”. $ ruby ​​​​test.rb test.rb:1:in " ": nedefinēta metode "laiks" 1:Integer (NoMethodError) 1.time {} ^^^^^ Vai jūs domājāt? reizes
  • Interaktīvo aprēķinu apvalks IRB (REPL, Read-Eval-Print-Loop) realizē ievadītā koda automātisku pabeigšanu (rakstot tiek parādīts mājiens ar ievades turpināšanas opcijām, starp kurām var pārvietoties ar taustiņu Tab vai Shift+ Tabulēšanas taustiņš). Pēc turpināšanas opcijas atlasīšanas blakus tiek parādīts dialoglodziņš, kurā tiek parādīta ar atlasīto vienumu saistītā dokumentācija. Tastatūras īsceļu Alt+d var izmantot, lai piekļūtu pilnai dokumentācijai.
    Ruby programmēšanas valodas 3.1 izlaišana
  • Valodas sintakse tagad ļauj, izsaucot funkcijas, izlaist vērtības hash literāļos un atslēgvārdu argumentos. Piemēram, izteiksmes “{x: x, y: y}” vietā tagad varat norādīt “{x:, y:}” un “foo(x: x, y: y)” vietā - foo( x:, y: )".
  • Stabilizēts atbalsts vienas rindiņas rakstu atbilstībām (ary => [x, y, z]), kuras vairs nav atzīmētas kā eksperimentālas.
  • Operators "^" modeļu atbilstībās tagad var ietvert patvaļīgas izteiksmes, piemēram: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Vienrindas raksta atbilstībās varat izlaist iekavas: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • RBS tipa anotācijas valodai, kas ļauj noteikt programmas struktūru un izmantotos tipus, ir pievienots atbalsts tipa parametru augšējās robežas norādīšanai, izmantojot simbolu “<”, pievienots atbalsts vispārīgo tipu aizstājvārdiem, ieviests atbalsts kolekcijas dārgakmeņu pārvaldībai, uzlabota veiktspēja un ieviesti daudzi jauni paraksti iebūvētajām un standarta bibliotēkām.
  • Eksperimentāls atbalsts integrētām izstrādes vidēm ir pievienots TypePro statiskā tipa analizatoram, kas ģenerē RBS anotācijas, pamatojoties uz koda analīzi bez skaidras tipa informācijas (piemēram, ir sagatavots papildinājums TypePro integrēšanai ar VSCode redaktoru).
  • Ir mainīta vairāku uzdevumu apstrādes secība. Piemēram, iepriekš izteiciena “foo[0], bar[0] = baz, qux” komponenti tika apstrādāti secībā baz, qux, foo, bar, bet tagad foo, bar, baz, qux.
  • Pievienots eksperimentāls atbalsts virkņu atmiņas piešķiršanai, izmantojot VWA (Variable Width Allocation) mehānismu.
  • Iebūvēto dārgakmeņu moduļu un standarta bibliotēkā iekļauto moduļu atjauninātās versijas. Net-ftp, net-imap, net-pop, net-smtp, matricas, prime un atkļūdošanas pakotnes ir iebūvētas.

Avots: opennet.ru

Pievieno komentāru