Ruby програмчлалын хэлний хувилбар 3.2

Ruby 3.2.0 гарсан ба динамик объект хандалтат програмчлалын хэл нь програм боловсруулахад өндөр үр ашигтай бөгөөд Perl, Java, Python, Smalltalk, Eiffel, Ada, Lisp-ийн шилдэг боломжуудыг агуулсан. Төслийн код нь GPL лицензийн хамгийн сүүлийн хувилбарт хамаарах, GPLv2-тай бүрэн нийцдэг BSD ("3 зүйлтэй BSDL") болон "Ruby" лицензийн дагуу түгээгддэг.

Гол сайжруулалтууд:

  • CRuby орчуулагчийн анхны портыг нэмсэн бөгөөд энэ нь вэб хөтөч дээр эсвэл wasmtime гэх мэт бие даасан ажиллах хугацаанд ажиллахад зориулж WebAssembly завсрын кодыг хөрвүүлдэг. Тусдаа ажиллах үед үйлдлийн системтэй шууд харилцахын тулд WASI (WebAssembly System Interface) API ашигладаг. Бусад зүйлсийн дотор WASI-ийн дээд талд VFS боодол өгсөн бөгөөд энэ нь Ruby програмыг бүхэлд нь нэг wasm файл хэлбэрээр танилцуулга болгон багцлах боломжийг олгодог. Хөтөч дээр ажиллуулах нь TryRuby гэх мэт сургалтын болон демо вэб үйлчилгээг бий болгоход ашиглагдаж болно. Хөгжлийн одоогийн шатанд порт нь Thread API ашигладаггүй үндсэн болон ачаалах тестийн багцуудыг амжилттай давж байна. Энэ порт нь мөн Fibers, үл хамаарах зүйл, хог цуглуулахыг дэмждэггүй.
  • Shopify цахим худалдааны платформыг хөгжүүлэгчид Rails framework ашигладаг Ruby программуудын гүйцэтгэлийг нэмэгдүүлэх санаачилгын хүрээнд бүтээгдсэн YJIT процессын JIT хөрвүүлэгч нь тогтвортой бөгөөд ажиллахад бэлэн болсон байна. үйлдвэрлэлийн хэрэглээ. Өмнө нь ашиглаж байсан MJIT JIT хөрвүүлэгчээс гол ялгаа нь бүхэл бүтэн аргуудыг боловсруулахад үндэслэсэн, Си хэл дээр гадаад хөрвүүлэгч ашигладаг YJIT нь Lazy Basic Block Versioning (LBBV) ашигладаг бөгөөд нэгдсэн JIT хөрвүүлэгчийг агуулдаг. LBBV-ийн тусламжтайгаар JIT нь эхлээд аргын зөвхөн эхлэлийг эмхэтгэдэг бөгөөд гүйцэтгэлийн явцад ашигласан хувьсагчийн төрлүүд болон аргументуудыг тодорхойлсны дараа хэсэг хугацааны дараа үлдсэн хэсгийг нь эмхэтгэдэг. YJIT нь Linux, MacOS, BSD болон бусад UNIX платформ дээрх x86-64 болон arm64/aarch64 архитектурт зориулагдсан.

    Ruby-ээс ялгаатай нь YJIT код нь Rust хэл дээр бичигдсэн бөгөөд эмхэтгэхийн тулд rustc 1.58.0+ хөрвүүлэгч шаардлагатай тул YJIT бүтээх нь анхдагчаар идэвхгүй бөгөөд сонголттой. YJIT-г ашиглах үед yjit-bench тестийг ажиллуулахад тайлбар ашиглахтай харьцуулахад гүйцэтгэл 41% өссөн байна.

    Ruby програмчлалын хэлний хувилбар 3.2

  • Үр ашиг багатай, цаг хугацаа их шаардсан ердийн илэрхийлэлд (ReDoS) гадны өгөгдлийг боловсруулах үед үйлчилгээ үзүүлэхээс татгалзах халдлагаас хамгаалах нэмэлт хамгаалалт нэмэгдсэн. Цээжлэх техникийг ашигладаг тохирох алгоритм нь мэдэгдэхүйц сайжирсан. Жишээлбэл, ‘/^a*b?a*$/ =~ “a” * 50000 + “x”’ илэрхийллийн гүйцэтгэлийн хугацаа 10 секундээс 0.003 секунд болж буурсан. Оновчлолын зардал нь санах ойн хэрэглээний өсөлт бөгөөд хэрэглээ нь оролтын өгөгдлийн хэмжээнээс ойролцоогоор 10 дахин их байдаг. Аюулгүй байдлын хоёр дахь хэмжүүр бол ердийн илэрхийлэлийг боловсруулах шаардлагатай завсарлага (жишээ нь, "Regexp.timeout = 1.0") тодорхойлох чадвар юм.
  • Синтакс_санал болгох горимыг оруулсан бөгөөд энэ нь "төгсгөл" илэрхийлэл дутуу эсвэл нэмэлт хаагдсантай холбоотой алдааны шалтгааныг оношлоход тусалдаг. Тохиромжгүй "төгсгөл", түлхүүр үг дутуу байна ('do', 'def', 'if' гэх мэт) ? 1 анги Нохой > 2 defbark > 3 төгсгөл 4 төгсгөл
  • Төрөл болон аргументтай холбоотой алдааны аргументыг тэмдэглэх чадварыг алдааны байршлыг харуулах горимд нэмсэн, жишээлбэл: test.rb:2: `+'-д: nil-ийг бүхэл тоо (TypeError) нийлбэр = ary болгон албадах боломжгүй. [0] + ary [1] ^^^^^^
  • Аргументуудын багцыг өөр аргууд руу шилжүүлэх шинэ синтакс нэмсэн: def foo(*) bar(*) end def baz(**) quux(**) төгсгөл
  • Ruby_vm/mjit/compiler-ийг санал болгож байна - хуучин MJIT JIT хөрвүүлэгчийн хувилбар, Ruby хэл дээр дахин бичсэн. MJIT нь MJIT ажилчны хэлхээнд ажиллахын оронд тусдаа процессоор ажилладаг эсэхийг баталгаажуулсан.
  • Bundler 2.4-т хамаарлыг боловсруулахдаа Dart хэлний pub багц менежерт ашигладаг PubGrub хувилбар илрүүлэгчийг ашигладаг. Өмнө нь хэрэглэж байсан Molinillo алгоритмыг RubyGems-д үргэлжлүүлэн ашигласаар байгаа ч ирээдүйд PubGrub-ээр солигдох болно.
  • Суурилуулсан үнэт чулууны модулиудын шинэчлэгдсэн хувилбарууд болон стандарт номын санд багтсан.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх