Ruby бағдарламалау тілінің шығарылымы 3.1

Ruby 3.1.0 шығарылды, ол бағдарлама әзірлеуде жоғары тиімді және Perl, Java, Python, Smalltalk, Eiffel, Ada және Lisp тілдерінің ең жақсы мүмкіндіктерін қамтитын динамикалық объектіге бағытталған бағдарламалау тілі. Жоба коды BSD («2-тармақты BSDL») және «Ruby» лицензиялары бойынша таратылады, бұл GPL лицензиясының соңғы нұсқасына сілтеме жасайды және GPLv3-пен толық үйлесімді.

Негізгі жақсартулар:

  • Shopify электрондық коммерция платформасының әзірлеушілері Rails негізін пайдаланатын және көптеген әдістерді шақыратын Ruby бағдарламаларының өнімділігін жақсарту бастамасының бөлігі ретінде жасалған жаңа тәжірибелік процесстік JIT компиляторы, YJIT қосылды. Бүкіл әдістерді өңдеуге негізделген және Си тілінде сыртқы компиляторды пайдаланатын бұрын қолданылған MJIT JIT компиляторынан негізгі айырмашылығы, YJIT Lazy Basic Block Versioning (LBBV) қолданады және біріктірілген JIT компиляторын қамтиды. LBBV көмегімен JIT алдымен әдістің басын ғана құрастырады, ал қалғандарын орындау кезінде қолданылатын айнымалылар мен аргументтердің түрлері анықталғаннан кейін біраз уақыттан кейін құрастырады. YJIT пайдалану кезінде railsbench сынағы орындалғанда өнімділіктің 22% артуы және сұйықтықты көрсету сынағының 39% артуы тіркелді. YJIT қазіргі уақытта x86-64 архитектурасы бар жүйелердегі unix тәрізді ОЖ қолдауымен шектелген және әдепкі бойынша өшірілген (қосу үшін пәрмен жолында «--yjit» жалауын көрсетіңіз).
  • Ескі MJIT JIT компиляторының жақсартылған өнімділігі. Rails пайдаланатын жобалар үшін әдепкі ең үлкен кэш өлшемі (--jit-max-cache) 100-ден 10000 1000 нұсқауға дейін ұлғайтылды. XNUMX-нан астам нұсқаулары бар әдістер үшін JIT пайдалануды тоқтатты. Zeitwerk of Rails қолдауы үшін TracePoint сынып оқиғалары үшін қосылған кезде JIT коды енді жойылмайды.
  • Ол толығымен қайта жазылған debug.gem жөндеу құралын қамтиды, ол қашықтан жөндеуді қолдайтын, жөнделген қолданбаны баяулатпайды, кеңейтілген жөндеу интерфейстерімен (VSCode және Chrome) интеграцияны қолдайды, көп ағынды және көп процесті қолданбаларды жөндеу үшін пайдаланылуы мүмкін, қамтамасыз етеді REPL кодын орындау интерфейсі кеңейтілген бақылау мүмкіндіктерін ұсынады, код үзінділерін жазып және қайталай алады. Бұрын ұсынылған отладчик lib/debug.rb негізгі таратудан жойылды.
    Ruby бағдарламалау тілінің шығарылымы 3.1
  • Кері қоңырауларды бақылау есептеріндегі қателерді көрнекі бөлектеу енгізілді. Қатені белгілеу кірістірілген және әдепкі қосылған асыл тас бумасы error_highlight арқылы қамтамасыз етіледі. Қатені белгілеуді өшіру үшін «--disable-error_highlight» параметрін пайдалануға болады. $ ruby ​​test.rb test.rb:1:in " ": 1 үшін анықталмаған "уақыт" әдісі:Integer (NoMethodError) 1.time {} ^^^^^ Сіз айтқыңыз келді ме? рет
  • IRB интерактивті есептеулер қабығы (REPL, Read-Eval-Print-Loop) енгізілген кодтың автоматты түрде аяқталуын жүзеге асырады (теру кезінде енгізуді жалғастыру опциялары бар кеңес көрсетіледі, олардың арасында Tab немесе Shift+ пернелері арқылы жылжытуға болады. Tab пернесі). Жалғастыру опциясын таңдағаннан кейін жақын жерде таңдалған элементпен байланысты құжаттаманы көрсететін диалогтық терезе көрсетіледі. Толық құжаттамаға қол жеткізу үшін Alt+d пернелер тіркесімін пайдалануға болады.
    Ruby бағдарламалау тілінің шығарылымы 3.1
  • Тіл синтаксисі енді функцияларды шақыру кезінде хэш литералдарындағы мәндерді және кілт сөз аргументтерін өткізіп жіберуге мүмкіндік береді. Мысалы, “{x: x, y: y}” өрнегі орнына енді “{x:, y:}”, ал “foo(x: x, y: y)” орнына - foo() көрсетуге болады. x:, y:)".
  • Бір жолды үлгі сәйкестіктері үшін тұрақталған қолдау (ary => [x, y, z]), олар енді эксперименттік ретінде белгіленбейді.
  • Үлгі сәйкестіктеріндегі "^" операторы енді ерікті өрнектерді қамтуы мүмкін, мысалы: Prime.each_cons(2).lazy.find_all{_1 [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Бір жолды үлгі сәйкестіктерінде жақшаларды алып тастауға болады: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Бағдарламаның құрылымын және қолданылатын типтерді анықтауға мүмкіндік беретін RBS типті аннотация тілі «<» таңбасын пайдаланып тип параметрлерінің жоғарғы шегін көрсетуге қолдауды қосты, жалпы типтердің бүркеншік аттары үшін қолдауды қосты, асыл тастарды басқаруға арналған жинақтар, жақсартылған өнімділік және кірістірілген және стандартты кітапханалар үшін көптеген жаңа қолтаңбалар енгізілді.
  • Біріктірілген әзірлеу орталарына эксперименттік қолдау TypePro статикалық типті анализаторға қосылды, ол нақты түр ақпаратынсыз кодты талдау негізінде RBS аннотацияларын жасайды (мысалы, TypePro бағдарламасын VSCode өңдегішімен біріктіру үшін қондырма дайындалған).
  • Бірнеше тапсырмаларды өңдеу реті өзгертілді. Мысалы, бұрын “foo[0], bar[0] = baz, qux” өрнегі компоненттері baz, qux, foo, bar ретімен өңделсе, енді foo, bar, baz, qux.
  • VWA (Variable Width Allocation) механизмі арқылы жолдар үшін жадты бөлуге эксперименттік қолдау қосылды.
  • Кірістірілген асыл модульдердің және стандартты кітапханаға енгізілгендердің жаңартылған нұсқалары. net-ftp, net-imap, net-pop, net-smtp, матрицалық, prime және жөндеу пакеттері кірістірілген.

Ақпарат көзі: opennet.ru

пікір қалдыру