Perl 5.36.0 programlama dili mevcut

Bir yıllık geliştirme sürecinin ardından, Perl programlama dilinin yeni ve kararlı bir dalı olan 5.36'nın piyasaya sürülmesi yayınlandı. Yeni sürümün hazırlanmasında yaklaşık 250 bin satır kod değiştirildi, değişiklikler 2000 dosyayı etkiledi ve geliştirmede 82 geliştirici görev aldı.

Şube 5.36, dokuz yıl önce onaylanan sabit geliştirme planına uygun olarak piyasaya sürüldü; bu, yeni istikrarlı şubelerin yılda bir kez ve her üç ayda bir düzeltici sürümlerin piyasaya sürülmesi anlamına geliyor. Yaklaşık bir ay içinde Perl 5.36.1'ın uygulanması sırasında tespit edilen en önemli hataları düzeltecek olan Perl 5.36.0'in ilk düzeltici sürümünün yayınlanması planlanıyor. Perl 5.36'nın piyasaya sürülmesiyle birlikte 5.32 şubesine yönelik destek de durduruldu; bu şube için gelecekteki güncellemeler yalnızca kritik güvenlik sorunlarının belirlenmesi durumunda yayınlanabilir. 5.37.x numaralandırmasına geçme kararı verilmediği sürece, Mayıs veya Haziran 2023'te Perl 5.38'in istikrarlı bir sürümünün oluşturulacağı temel alınarak deneysel şube 7'yi geliştirme süreci de başladı.

Anahtar değişiklikler:

  • İşlev imzaları desteği stabilize edildi ve artık "v5.36 kullan" pragması belirtilirken kullanılabilir; bu, işlevde kullanılan değişkenlerin listesini açıkça tanımlamanıza ve bir dizi değişkenden değerleri kontrol etme ve atama işlemlerini otomatikleştirmenize olanak tanır. gelen parametreler. Örneğin, daha önce kullanılan kod: sub foo { die "Alt program için çok fazla argüman" sürece @_ >= 2; @_ <= 2 olmadığı sürece "Alt program için çok az argüman" die benim($sol, $sağ) = @_; $sol + $sağ değerini döndür; }

    imzaları kullanırken şu şekilde değiştirilebilir:

    sub foo ($sol, $sağ) { return $sol + $sağ; }

    Foo'yu ikiden fazla argümanla çağırırsanız yorumlayıcı bir hata verecektir. Liste ayrıca bazı bağımsız değişkenleri göz ardı etmenize olanak tanıyan özel bir "$" değişkenini de destekler; örneğin, "alt foo ($sol, $, $sağ)" yalnızca birinci ve üçüncü bağımsız değişkenleri değişkenlere kopyalamanıza olanak tanır , işlev argümanına tam olarak üçünün iletilmesi gerekir.

    İmza sözdizimi ayrıca isteğe bağlı bağımsız değişkenleri belirlemenize ve bir bağımsız değişken eksikse varsayılan değerleri belirlemenize olanak tanır. Örneğin “sub foo ($left, $right = 0)” belirtilerek ikinci argüman isteğe bağlı hale gelir ve yoksa 0 değeri iletilir. Atama işleminde, diğer değişkenlerin kullanılması da dahil olmak üzere isteğe bağlı ifadeler belirtebilirsiniz. listeden veya global değişkenlerden. Değişken yerine bir karma veya dizi belirtmek (örneğin, "alt foo ($left, @right)") bir veya daha fazla bağımsız değişkenin iletilmesine olanak tanır.

  • İmzalar kullanılarak bildirilen işlevlerde, "@_" dizisinden isteğe bağlı parametre atama desteği deneysel olarak bildirilir ve bir uyarıyla sonuçlanır (uyarı yalnızca yeni sözdizimi kullanılarak bildirilen işlevlerde @_ kullanılırsa verilir). Örneğin, işlev için bir uyarı görüntülenecektir: v5.36'yı kullanın; sub f ($x, $y = 123) { say "İlk argüman $_[0]"; }
  • "V5.36 kullan" pragmasını belirtirken sabitlenir ve kullanılabilir hale gelir; bir nesnenin belirtilen sınıfın bir örneği mi yoksa ondan türetilmiş bir sınıf mı olduğunu kontrol etmek için "isa" infix operatörü. Örneğin: if( $obj isa Paket::Ad ) { … }
  • "v5.36 kullan" pragmasını belirlerken, uyarı işleme etkinleştirilir ("uyarıları kullan" modu etkinleştirilir).
  • "v5.36 kullan" pragmasını belirtirken, nesneleri çağırmak için dolaylı gösterim desteği ("dolaylı özellik") devre dışı bırakılır; bu, nesneleri çağırmanın "->" ("yöntem $" yerine boşluk kullanıldığı eski bir yöntemdir) “$object-> $method(@param)") yerine object @param” kullanın. Örneğin, “my $cgi = new CGI” yerine “my $cgi = CGI->new” kullanmanız gerekir.
  • "V5.36 kullan" pragmasını belirtirken, Perl 4 stilinde ("çok boyutlu özellik") çok boyutlu dizileri ve karmaları taklit etme desteği devre dışı bırakılır ve birkaç anahtarın gösteriminin bir ara diziye çevrilmesine olanak tanır (örneğin, " $hash{1, 2}"), "$hash{join($;, 1, 2)}") biçimine dönüştürüldü.
  • "v5.36 kullan" pragmasını belirtirken, switch ve case ifadelerine benzer şekilde deneysel dallanma mekanizması ("özellik anahtarı") desteği devre dışı bırakılır (Perl, verilen ve ne zaman anahtar sözcüklerini kullanır). Bu özelliği kullanmak için, Perl 5.36'dan başlayarak, 'özellik 'değiştir' özelliğini kullan'ı açıkça belirtmeniz gerekir ve "sürüm kullan" seçeneğini belirlediğinizde, artık otomatik olarak etkinleştirilmeyecektir.
  • Normal ifadelerin içindeki köşeli parantez içindeki ek karakter sınıflarına yönelik destek stabil hale getirildi ve varsayılan olarak kullanılabilir. Bu özellik, karakter kümelerinin kesişimi, hariç tutulması ve birleştirilmesi için gelişmiş kuralları kullanarak eşleşmeler gerçekleştirmenize olanak tanır. Örneğin, '[A-Z - W]' - W hariç A'dan Z'ye karakterler.
  • "(?", "( )", "{ }" ve "[ ]" işlemlerine yönelik destek kısmen sabitlenmiştir ve varsayılan olarak mevcuttur; "" "", "" "" vb. sembollerini kullanabilirsiniz. Örneğin , "qr"pat"".
  • Sıralama işlevinin bağımsız değişkenler olmadan çağrılması yasaktır; bu artık bir hatayla sonuçlanacaktır. @a = sıralama @boş; # devam edecek @a = sıralama; # bir hata yazdırılacaktır @a = sort(); # bir hata yazdırılacak
  • Dosyanın tamamının satır satır yüklenmesi yerine bir bütün olarak yüklenmesine olanak tanıyan yeni bir komut satırı işareti "-g" önerildi. Bayrağın eylemi “-0777” göstergesine benzer.
  • Unicode spesifikasyonu desteği 14.0 sürümüne güncellendi.
  • Kayan nokta istisnalarının (SIGFPE) SIGSEGV gibi diğer alarmlara benzer şekilde anında işlenmesini sağlar ve $SIG{FPE} aracılığıyla SIGFPE için kendi işleyicilerinizi bağlamanıza olanak tanır, örneğin sorunun oluştuğu satır numarasını çıktı olarak verir.
  • Temel pakette yer alan modüllerin güncellenmiş sürümleri.
  • Performans optimizasyonları eklendi. Büyük karma anahtarların, paylaşılan dize tabloları kullanılmadan daha verimli bir şekilde saklanabilmesi sağlandı. Yeni skaler değerler oluşturma performansı önemli ölçüde iyileştirildi; örneğin aşağıdaki kod artık %30 daha hızlı çalışıyor: $str = "A" x 64; for (0..1_000_000) { @svs = bölme //, $str }
  • Yorumlayıcı kodu, C99 standardında tanımlanan yapılardan bazılarını kullanmaya başladı. Perl'ü oluşturmak artık C99'u destekleyen bir derleyici gerektiriyor. MSVC++'ın eski sürümlerinde (VC12 öncesi) derleme desteği durduruldu. Microsoft Visual Studio 2022'de (MSVC++ 14.3) derleme desteği eklendi.
  • AT&T UWIN, DOS/DJGPP ve Novell NetWare platformlarına yönelik destek durduruldu.

Kaynak: opennet.ru

Yorum ekle