Ruby programazio-lengoaia 3.1 kaleratzea

Ruby 3.1.0 kaleratu da, objektuetara zuzendutako programazio-lengoaia dinamikoa, programaren garapenean oso eraginkorra dena eta Perl, Java, Python, Smalltalk, Eiffel, Ada eta Lisp-en ezaugarri onenak biltzen dituena. Proiektuaren kodea BSD ("2 klausula BSDL") eta "Ruby" lizentzien arabera banatzen da, GPL lizentziaren azken bertsioari erreferentzia egiten diona eta GPLv3-rekin guztiz bateragarria dena.

Hobekuntza nagusiak:

  • Prozesuan JIT konpilatzaile esperimental berri bat, YJIT, gehitu da, Shopify merkataritza elektronikoko plataformaren garatzaileek Rails esparrua erabiltzen duten eta metodo asko deitzen dituzten Ruby programen errendimendua hobetzeko ekimen baten barruan sortua. Lehen erabilitako MJIT JIT konpiladorearen gakoa, metodo osoak prozesatzen oinarritzen dena eta C hizkuntzan kanpoko konpilatzailea erabiltzen duena, YJIT-ek Lazy Basic Block Versioning (LBBV) erabiltzen duela eta JIT konpilatzaile integratua dauka. LBBVrekin, JIT-k metodoaren hasiera baino ez du konpilatzen lehenik, eta gainerakoak denbora pixka bat geroago konpilatzen ditu, exekuzioan erabilitako aldagai eta argumentu motak zehaztu ondoren. YJIT erabiltzean, errendimenduaren % 22ko igoera erregistratu zen railsbench proba exekutatzen ari denean, eta % 39ko igoera likido-errenda proban. Une honetan YJIT x86-64 arkitektura duten sistemetan unix-antzeko sistema eragileak onartzen ditu eta lehenespenez desgaituta dago (aktibatzeko, zehaztu "--yjit" marka komando-lerrokoan).
  • MJIT JIT konpiladore zaharraren errendimendua hobetu da. Rails erabiltzen duten proiektuetarako, cachearen gehienezko tamaina lehenetsia (--jit-max-cache) 100etik 10000 instrukziora igo da. JIT erabiltzeari utzi dio 1000 instrukzio baino gehiago dituzten metodoetarako. Zeitwerk of Rails onartzeko, JIT kodea ez da baztertzen TracePoint gaituta dagoenean klase-gertaeretarako.
  • Guztiz berridatzitako debug.gem araztaile bat barne hartzen du, urruneko arazketa onartzen duena, arazteko aplikazioa moteltzen ez duena, arazketa-interfaze aurreratuekin integratzea onartzen duena (VSCode eta Chrome), hari anitzeko eta prozesu anitzeko aplikazioak arazketarako erabil daiteke, eskaintzen du. REPL kodea exekutatzeko interfazea, trazatzeko gaitasun aurreratuak eskaintzen ditu, kode zatiak grabatu eta errepika ditzake. Lehen eskainitako lib/debug.rb araztailea oinarrizko banaketatik kendu da.
    Ruby programazio-lengoaia 3.1 kaleratzea
  • Deien itzuleraren jarraipenaren txostenetan akatsen bisual nabarmentzea ezarri da. Erroreen seinaleztapena error_highlight bitxi pakete integratua eta lehenetsia gaituta erabiltzen da. Erroreen markatzea desgaitzeko, "--disable-error_highlight" ezarpena erabil dezakezu. $ ruby ​​​​test.rb test.rb:1:in " ": definitu gabeko metodoa "denbora" 1:Integer (NoMethodError) 1.time {} ^^^^^ Esan nahi al zenuen? aldiz
  • Kalkulu interaktiboen shell IRB (REPL, Read-Eval-Print-Loop) sartutako kodea automatikoki osatzea ezartzen du (idazten duzun heinean, iradokizun bat bistaratzen da sarrera jarraitzeko aukerekin, eta horien artean Tabularekin edo Shift+ekin mugitu dezakezu). Tabulazio tekla). Jarraitzeko aukera hautatu ondoren, aukeratutako elementuarekin lotutako dokumentazioa erakusten duen elkarrizketa-koadro bat bistaratzen da inguruan. Teklatuko lasterbidea Alt+d erabil daiteke dokumentazio osoa atzitzeko.
    Ruby programazio-lengoaia 3.1 kaleratzea
  • Hizkuntza-sintaxiak orain funtzioak deitzean hash literalen eta gako-argumentuen balioak salbuesteko aukera ematen du. Adibidez, "{x: x, y: y}" adierazpenaren ordez orain "{x:, y:}" zehaztu dezakezu, eta "foo(x: x, y: y)"-ren ordez - foo( x:, y: )".
  • Lerro bakarreko ereduen parekatzeetarako laguntza egonkortua (ary => [x, y, z]), jada esperimental gisa markatuta ez daudenak.
  • Ereduen bat-etortzeetako "^" eragileak adierazpen arbitrarioak izan ditzake orain, adibidez: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Lerro bakarreko ereduen parekatzeetan, parentesiak ezaba ditzakezu: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • RBS motako ohartarazpen-lengoaiak, programaren egitura eta erabilitako motak zehaztea ahalbidetzen duenak, "<" ikurra erabiliz mota-parametroen goiko muga zehazteko laguntza gehitu du, mota generikoen aliasentzako laguntza gehitu du, laguntza inplementatu du. harribitxiak kudeatzeko bildumak, errendimendua hobetu eta sinadura berri asko inplementatu zituen liburutegi integratuetarako eta estandarrentzat.
  • Garapen-ingurune integratuetarako laguntza esperimentala gehitu zaio TypePro mota estatikoko analizatzaileari, eta kode-analisian oinarritutako RBS oharrak sortzen ditu mota-informazio espliziturik gabe (adibidez, TypePro VSCode editorearekin integratzeko gehigarri bat prestatu da).
  • Hainbat esleipen prozesatzeko ordena aldatu da. Adibidez, lehen β€œfoo[0], bar[0] = baz, qux” esapidearen osagaiak baz, qux, foo, bar ordenan prozesatzen ziren, baina orain foo, bar, baz, qux.
  • VWA (Variable Width Allocation) mekanismoa erabiliz kateentzako memoria esleitzeko laguntza esperimentala gehitu da.
  • Eraikitako gem moduluen bertsio eguneratuak eta liburutegi estandarrean sartuta daudenak. Net-ftp, net-imap, net-pop, net-smtp, matrix, prime eta debug paketeak integratuta daude.

Iturria: opennet.ru

Gehitu iruzkin berria