Siideynta luqadda barnaamijka Ruby 3.1

Ruby 3.1.0 waa la sii daayay, luuqad barnaamijeed firfircoon oo ku jihaysan shayga kaas oo aad ugu hufan horumarinta barnaamijka oo ku dara astaamaha ugu fiican ee Perl, Java, Python, Smalltalk, Eiffel, Ada iyo Lisp. Xeerka mashruuca waxa lagu qaybiyay shatiga BSD ("2-clause BSDL") iyo "Ruby" shatiga, kaas oo tixraacaya nooca ugu dambeeyay ee shatiga GPL oo si buuxda ula jaan qaadaya GPLv3.

Horumarka ugu weyn:

  • Tijaabo cusub oo tijaabo ah oo ku jirta habka JIT compiler, YJIT, ayaa lagu daray, oo ay abuureen horumariyeyaasha Shopify e-commerce platform taas oo qayb ka ah hindise lagu hagaajinayo waxqabadka barnaamijyada Ruby ee isticmaala qaabka Rails-ka oo wac habab badan. Farqiga ugu muhiimsan ee ka duwan kii hore ee MJIT JIT compiler, kaas oo ku salaysan habaynta hababka oo dhan oo isticmaala qalab dibadda ah ee luqadda C, waa in YJIT ay isticmaasho Lazy Basic Block Versioning (LBBV) oo ay ka kooban tahay isku-darka JIT. Iyadoo LBBV, JIT marka hore waxay ururisaa oo kaliya bilawga habka, waxayna ururisaa inta soo hartay wakhti ka dib, ka dib noocyada doorsoomayaasha iyo doodaha la isticmaalo ayaa la go'aamiyaa inta lagu jiro fulinta. Markaad isticmaalayso YJIT, 22% korodhka waxqabadka ayaa la diiwaan galiyay marka la wado imtixaanka railsbench, iyo 39% korodhka tijaabada dareeraha-samaynta. YJIT hadda waxay ku xaddidan tahay taageerada unix-u eg OS-yada nidaamyada leh x86-64 qaab dhismeedka waana naafo (si aad u hawlgeliso, qeex calanka "--yjit" ee khadka taliska).
  • Waxqabadkii hore ee MJIT JIT compiler. Mashruucyada isticmaalaya Rails, cabbirka kaydinta ugu badan ee caadiga ah (-jit-max-cache) ayaa laga kordhiyey 100 ilaa 10000 tilmaamood. La joojiyay isticmaalka JIT ee habab leh in ka badan 1000 tilmaamo. Si loo taageero Zeitwerk of Rails, koodka JIT hadda lama tuuro marka TracePoint loo furo dhacdooyinka fasalka.
  • Waxaa ka mid ah debug.gem debugger oo si buuxda dib loo qoray, kaas oo taageera khaladka fogaanta, ma hoos u dhigo codsiga la tirtiray, wuxuu taageeraa is dhexgalka dhex-dhexaadinta cilladaha horumarsan (VSCode iyo Chrome), waxaa loo isticmaali karaa in lagu tirtiro codsiyada badan ee-threaded iyo nidaamka badan, waxay bixisaa Interface fulinta koodka REPL, wuxuu bixiyaa awoodo raadin horumarsan, wuu duubi karaa oo dib u daabici karaa godadka koodka. Qalabkii hore ee la bixiyay lib/debug.rb ayaa laga saaray qaybinta saldhiga.
    Siideynta luqadda barnaamijka Ruby 3.1
  • Hirgelinta muujinta muuqaalka ee khaladaadka ku jira warbixinnada raadraaca dib-u-soo yeerista. Cillad calaamadinta waxaa lagu bixiyaa iyada oo la adeegsanayo xirmada gem-ku-dhismay iyo ku-talagalka ah ee error_highlight. Si aad u joojiso calaamadaynta qaladka, waxaad isticmaali kartaa goobta "--disable-error_highlight". $ ruby ​​​​test.rb test.rb:1:in "": habka aan la qeexin "waqtiga" ee 1:Integer (NoMethodError) 1.time {} ^^^^^ Ma waxaad ula jeedaa? waqtiyo
  • Qolka xisaabinta is-dhexgalka ee IRB (REPL, Read-Eval-Print-Loop) waxay fulisaa dhammaystirka tooska ah ee koodka la geliyey (sida aad u qorayso, tilmaan ayaa lagu soo bandhigay xulashooyin lagu sii wadi karo gelinta, kuwaas oo aad ku dhaqaaqi karto Tab ama Shift+ Tab furaha). Ka dib marka la doorto ikhtiyaarka sii wadida, sanduuqa wada-hadalka ayaa soo bandhigaya meel u dhow kaas oo muujinaya dukumeenti la xidhiidha shayga la doortay. Jidka gaaban ee kiiboodhka Alt+d waxa loo isticmaali karaa in lagu galo dukumeenti buuxa.
    Siideynta luqadda barnaamijka Ruby 3.1
  • Syntax luqadda hadda waxay ogolaataa qiyamka xarfaha xashiishka iyo doodaha kelmadda muhiimka ah in la dhaafo marka la wacayo hawlaha. Tusaale ahaan, halkii aad ka odhan lahayd "{x: x, y: y}" waxaad hadda cayimi kartaa "{x:, y:}", iyo halkii "foo(x: x, y: y)" - foo( x:, y:)".
  • Taageerada xasiloon ee isku-dheellitirka qaab-hal-line (ary => [x, y, z]), kuwaas oo aan hadda loo calaamadin sidii tijaabo.
  • Hawl-wadeenka "^" ee qaabka u dhigma hadda waxa uu ka koobnaan karaa tibaaxo aan sabab lahayn, tusaale ahaan: Prime.each_cons(2) .lazy.find_all{_1 in [n, ^(n + 2)]}.qaado (3).to_a #= > [[3, 5], [5, 7], [11, 13]
  • Hababka hal-line ee u dhigma, waxaad ka saari kartaa qawl-qaadaha: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Luqadda sharraxaadda nooca RBS, kaas oo kuu ogolaanaya inaad go'aamiso qaabka barnaamijka iyo noocyada loo isticmaalo, ayaa ku daray taageerada lagu qeexayo xadka sare ee cabbirrada nooca iyadoo la adeegsanayo calaamadda "<", ku daray taageerada magacyada noocyada guud, taageerada la hirgeliyay ururinta maaraynta dhagaxyada, hagaajinta waxqabadka iyo hirgelinta saxiixyo badan oo cusub oo loogu talagalay maktabadaha gudaha iyo kuwa caadiga ah.
  • Taageerada tijaabada ah ee jawiyada horumarinta isku dhafan ayaa lagu daray nooca falanqaynta nooca 'TypePro static', kaas oo soo saara faallooyin RBS oo ku salaysan falanqaynta koodhka iyada oo aan la helin macluumaadka nooca cad (tusaale, wax-ku-kordhin ayaa loo diyaariyey isku-dhafka TypePro iyo tifaftiraha VSCode).
  • Habka habaynta hawlo badan ayaa la bedelay. Tusaale ahaan, hore qaybaha odhaahda "foo[0], bar[0] = baz, qux" waxa loo habeeyey habka baz, qux, foo, bar, laakiin hadda foo, bar, baz, qux.
  • Taageero tijaabo ah oo lagu daray qoondaynta xusuusta ee xargaha iyadoo la adeegsanayo habka VWA (Variable Width Allocation).
  • Noocyada la cusboonaysiiyay ee modules-ka dhagaxa ah ee ku dhex jira iyo kuwa lagu daray maktabadda caadiga ah. Shabakadda net-ftp, net-map, net-pop, net-smtp, matrix, Prime iyo xidhmooyinka debug ayaa gudaha ku dhex jira.

Source: opennet.ru

Add a comment