Perl 5.36.0 програмчлалын хэл боломжтой

Жилийн турш хөгжүүлсний дараа Perl програмчлалын хэлний шинэ тогтвортой салбар болох 5.36 хэвлэгдэн гарлаа. Шинэ хувилбарыг бэлтгэх явцад 250 мянга орчим мөр кодыг өөрчилсөн бөгөөд өөрчлөлт нь 2000 файлд нөлөөлж, 82 хөгжүүлэгчид хөгжүүлэлтэд оролцсон.

Салбар 5.36 нь есөн жилийн өмнө батлагдсан хөгжлийн тогтсон хуваарийн дагуу гарсан бөгөөд энэ нь шинэ тогтвортой салбаруудыг жилд нэг удаа, засч залруулах хувилбаруудыг гурван сар тутамд гаргадаг гэсэн үг юм. Сар орчмын дараа Perl 5.36.1-ийг хэрэгжүүлэх явцад илэрсэн хамгийн чухал алдаануудыг засч залруулах Perl 5.36.0-ийн анхны засварлах хувилбарыг гаргахаар төлөвлөж байна. Perl 5.36 хувилбарыг гаргахтай зэрэгцэн 5.32 салбарыг дэмжихээ больсон бөгөөд аюулгүй байдлын чухал асуудлууд илэрсэн тохиолдолд л ирээдүйн шинэчлэлтүүдийг гаргах боломжтой. Туршилтын салбар 5.37-г хөгжүүлэх үйл явц мөн эхэлсэн бөгөөд үүний үндсэн дээр 2023.x дугаарлалт руу шилжих шийдвэр гаргаагүй тохиолдолд Perl 5.38-ийн тогтвортой хувилбар 7 оны XNUMX эсвэл XNUMX-р сард бий болно.

Гол өөрчлөлтүүд:

  • Функцийн гарын үсгийн дэмжлэг тогтворжсон бөгөөд одоо "v5.36 ашиглах" прагма-г зааж өгөхөд ашиглах боломжтой болсон бөгөөд энэ нь функцэд ашигласан хувьсагчдын жагсаалтыг тодорхой тодорхойлох, массиваас утгыг шалгах, оноох үйлдлийг автоматжуулах боломжийг олгоно. ирж буй параметрүүд. Жишээ нь, өмнө нь ашигласан код: sub foo { die "Дэд програмын хувьд хэтэрхий олон аргумент" @_ >= 2 биш бол; үхэх "Дэд програмын хувьд хэтэрхий цөөн тооны аргумент"-аас бусад тохиолдолд @_ <= 2; миний($зүүн, $баруун) = @_; $ зүүн + $ баруун буцаах; }

    гарын үсэг ашиглах үед үүнийг дараах байдлаар сольж болно.

    sub foo ($зүүн, $баруун) {$зүүн + $барууныг буцаана; }

    Хэрэв та foo-г хоёроос дээш аргументтай дуудвал орчуулагч алдаа гаргах болно. Жагсаалт нь мөн "$" тусгай хувьсагчийг дэмждэг бөгөөд энэ нь зарим аргументыг үл тоомсорлох боломжийг олгодог, жишээлбэл, "sub foo ($left, $, $right)" нь зөвхөн эхний болон гурав дахь аргументыг хувьсагчид хуулах боломжийг олгоно. , харин яг гурвыг функцын аргумент руу шилжүүлэх ёстой.

    Мөн гарын үсгийн синтакс нь нэмэлт аргументуудыг зааж өгөх, хэрэв аргумент байхгүй бол анхдагч утгыг зааж өгөх боломжийг олгодог. Жишээлбэл, "sub foo ($left, $right = 0)" гэж зааж өгснөөр хоёр дахь аргумент нь сонголттой болж, хэрэв байхгүй бол 0 утгыг дамжуулна. Бие даалтын үйлдлээр та дурын илэрхийлэл, түүний дотор бусад хувьсагчдыг ашиглаж болно. жагсаалтаас эсвэл глобал хувьсагчаас. Хувьсагчийн оронд хэш эсвэл массив (жишээ нь, "sub foo ($left, @right)") зааж өгснөөр нэг буюу хэд хэдэн аргументыг дамжуулах боломжтой болно.

  • Гарын үсэг ашиглан зарласан функцүүдэд "@_" массиваас нэмэлт параметр олгох дэмжлэгийг туршилт гэж зарлаж, анхааруулга өгөх болно (шинэ синтакс ашиглан зарласан функцүүдэд @_-г ашигласан тохиолдолд л анхааруулга өгнө). Жишээлбэл, функцийн талаар анхааруулга гарч ирнэ: v5.36 ашиглах; sub f ($x, $y = 123) { "Эхний аргумент нь $_[0]" гэж хэл; }
  • Тогтворжсон бөгөөд "v5.36 ашиглах" прагмыг зааж өгөх үед объект нь заасан ангийн жишээ эсвэл түүнээс үүссэн анги эсэхийг шалгах "isa" infix операторыг ашиглах боломжтой. Жишээ нь: if( $obj isa Багц::Нэр ) { … }
  • "V5.36 ашиглах" прагмыг зааж өгөх үед анхааруулах боловсруулалтыг идэвхжүүлсэн байна ("ашиглах анхааруулга" горим идэвхжсэн).
  • “V5.36 ашиглах” прагма-г зааж өгөхдөө объект дуудах шууд бус тэмдэглэгээний дэмжлэг (“шууд бус функц”) идэвхгүй болсон - “->”-ын оронд зай ашигладаг объектыг дуудах хуучирсан арга (“арга $$) "$object-> $method(@param)"-ын оронд объект @param"). Жишээлбэл, "my $cgi = new CGI" гэсний оронд "my $cgi = CGI->new" гэсэн үгийг ашиглах хэрэгтэй.
  • “V5.36 ашиглах” прагмыг зааж өгөхдөө Perl 4 загварын (“олон хэмжээст функц”) олон хэмжээст массив болон хэшийг дуурайх дэмжлэгийг идэвхгүй болгож, хэд хэдэн товчлуурын заалтыг завсрын массив болгон хөрвүүлэх боломжийг олгодог (жишээлбэл, “ $hash{1, 2}”) "$hash{join($;, 1, 2)}" болгон хөрвүүлэв.
  • “V5.36 ашиглах” прагма-г зааж өгөхдөө шилжүүлэгч болон тохиолдол хэллэгтэй төстэй туршилтын салбарлах механизмын (“онцлогын шилжүүлэгч”) дэмжлэгийг идэвхгүй болгосон (Perl өгөгдсөн болон хэзээ гэсэн түлхүүр үгсийг ашигладаг). Perl 5.36-аас эхлэн энэ функцийг ашиглахын тулд та "хэрэглэх функц "switch"'-г тодорхой зааж өгөх ёстой бөгөөд хэрэв та "хэрэглэх хувилбар"-ыг зааж өгвөл автоматаар идэвхжихгүй.
  • Энгийн илэрхийлэл доторх дөрвөлжин хаалтанд нэмэлт тэмдэгтийн ангиудын дэмжлэгийг тогтворжуулсан бөгөөд анхдагчаар ашиглах боломжтой. Энэ функц нь тэмдэгтүүдийн огтлолцол, хасалт, нэгдлийн дэвшилтэт дүрмийг ашиглан тааруулах боломжийг танд олгоно. Жишээлбэл, '[AZ - W]' - А-аас Я хүртэлх тэмдэгтүүд W-г оруулаагүй болно.
  • "(?", "( )", "{ }" болон "[ ]" үйлдлүүдийн дэмжлэгийг хэсэгчлэн тогтворжуулсан бөгөөд анхдагчаар ашиглах боломжтой; та "" "", "" "" гэх мэт тэмдгийг ашиглаж болно. Жишээлбэл. , "qr"пат "".
  • Аргументгүйгээр эрэмбэлэх функцийг дуудахыг хориглосон бөгөөд энэ нь одоо алдаа гаргах болно. @a = эрэмбэлэх @хоосон; # үргэлжлүүлнэ @a = эрэмбэлэх; # алдаа хэвлэгдэх болно @a = sort(); # алдаа хэвлэгдэх болно
  • "-g" командын мөрийн шинэ тугийг санал болгосон бөгөөд энэ нь файлыг мөр мөрөөр бус бүхэлд нь ачаалах горимыг идэвхжүүлдэг. Тугны үйлдэл нь "-0777" гэсэн тэмдэглэгээтэй төстэй юм.
  • Юникод тодорхойлолтын дэмжлэгийг 14.0 хувилбар болгон шинэчилсэн.
  • SIGSEGV зэрэг бусад дохиололтой төстэй хөвөгч цэгийн онцгой тохиолдлуудыг (SIGFPE) шуурхай зохицуулж, $SIG{FPE}-ээр дамжуулан SIGFPE-д өөрийн зохицуулагчийг холбох, жишээлбэл, асуудал гарсан мөрийн дугаарыг гаргах боломжийг олгоно.
  • Үндсэн багцад багтсан модулиудын шинэчилсэн хувилбарууд.
  • Гүйцэтгэлийн оновчлолыг нэмсэн. Хуваалцсан мөрийн хүснэгтүүдийг ашиглахгүйгээр том хэш түлхүүрүүдийг илүү үр дүнтэй хадгалах боломжийг олгосон. Шинэ скаляр утгыг үүсгэх гүйцэтгэл мэдэгдэхүйц сайжирсан, жишээлбэл, дараах код одоо 30% хурдан ажиллаж байна: $str = "A" x 64; (0..1_000_000) { @svs = хуваах //, $str }
  • Орчуулагчийн код нь C99 стандартад тодорхойлсон зарим бүтцийг ашиглаж эхэлсэн. Perl-ийг бүтээхэд одоо C99-ийг дэмждэг хөрвүүлэгч хэрэгтэй. MSVC++-ийн (VC12-аас өмнөх) хуучин хувилбаруудыг бүтээхэд дэмжлэг үзүүлэхээ больсон. Microsoft Visual Studio 2022 (MSVC++ 14.3) дээр бүтээх дэмжлэг нэмэгдсэн.
  • AT&T UWIN, DOS/DJGPP болон Novell NetWare платформуудыг дэмжихээ больсон.

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

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