A Ruby 3.1 programozási nyelv kiadása

Megjelent a Ruby 3.1.0, egy dinamikus objektum-orientált programozási nyelv, amely rendkívül hatékony a programfejlesztésben, és magában foglalja a Perl, Java, Python, Smalltalk, Eiffel, Ada és Lisp legjobb tulajdonságait. A projektkód a BSD ("2-clause BSDL") és a "Ruby" licencek alatt kerül terjesztésre, amelyek a GPL licenc legújabb verziójára utalnak, és teljes mértékben kompatibilisek a GPLv3-mal.

Főbb fejlesztések:

  • Hozzáadásra került egy új kísérleti folyamat közbeni JIT fordító, az YJIT, amelyet a Shopify e-kereskedelmi platform fejlesztői hoztak létre a Rails keretrendszert használó és számos módszert hívó Ruby programok teljesítményének javítására irányuló kezdeményezés részeként. A fő különbség a korábban használt MJIT JIT fordítóhoz képest, amely teljes metódusok feldolgozására épül, és külső fordítót használ C nyelven, hogy az YJIT Lazy Basic Block Versioning (LBBV)-t használ, és tartalmaz egy integrált JIT fordítót. Az LBBV-vel a JIT először csak a metódus elejét fordítja le, a többit pedig valamivel később, miután a végrehajtás során meghatározásra került a használt változók és argumentumok típusa. Az YJIT használatakor 22%-os teljesítménynövekedést regisztráltak a sínpadi teszt futtatása során, és 39%-os növekedést a folyadék-vakolat tesztben. Az YJIT jelenleg az x86-64 architektúrájú rendszereken lévő unix-szerű operációs rendszerek támogatására korlátozódik, és alapértelmezés szerint le van tiltva (az aktiváláshoz adja meg a „--yjit” jelzőt a parancssorban).
  • A régi MJIT JIT fordító jobb teljesítménye. A Rails-t használó projekteknél az alapértelmezett maximális gyorsítótár mérete (--jit-max-cache) 100-ról 10000 1000 utasításra nőtt. Leállítottuk a JIT használatát a több mint XNUMX utasítást tartalmazó módszerekhez. A Zeitwerk of Rails támogatása érdekében a JIT-kód már nem kerül eldobásra, ha a TracePoint engedélyezve van az osztályeseményekhez.
  • Tartalmaz egy teljesen újraírt debug.gem hibakeresőt, amely támogatja a távoli hibakeresést, nem lassítja le a hibakereső alkalmazást, támogatja a fejlett hibakereső felületekkel (VSCode és Chrome) való integrációt, használható többszálú és többfolyamatos alkalmazások hibakeresésére, biztosít REPL kódvégrehajtási felület, fejlett nyomkövetési lehetőségeket kínál, kódrészleteket rögzíthet és visszajátszhat. A korábban felajánlott lib/debug.rb hibakereső eltávolítva az alapterjesztésből.
    A Ruby 3.1 programozási nyelv kiadása
  • A hibák vizuális kiemelése a visszahívási nyomkövetési jelentésekben. A hibajelzés a beépített és alapértelmezetten engedélyezett error_highlight gemcsomag használatával érhető el. A hibajelzés letiltásához használja a „--disable-error_highlight” beállítást. $ ruby ​​​​test.rb test.rb:1:in " ": undefined metódus "time" for 1:Integer (NoMethodError) 1.time {} ^^^^^ Úgy érted? alkalommal
  • Az interaktív számítások IRB (REPL, Read-Eval-Print-Loop) héja a beírt kód automatikus befejezését valósítja meg (gépelés közben egy tipp jelenik meg a bevitel folytatásának lehetőségeivel, amelyek között a Tab vagy a Shift+ billentyűkkel lehet mozogni Tab billentyű). A folytatási lehetőség kiválasztása után a közelben megjelenik egy párbeszédpanel, amely megjeleníti a kiválasztott elemhez tartozó dokumentációt. Az Alt+d billentyűkombinációval elérheti a teljes dokumentációt.
    A Ruby 3.1 programozási nyelv kiadása
  • A nyelvi szintaxis mostantól lehetővé teszi a hash literálokban és a kulcsszóargumentumokban lévő értékek kihagyását függvények hívásakor. Például a „{x: x, y: y}” kifejezés helyett megadhatja a „{x:, y:}” kifejezést, a „foo(x: x, y: y)” helyett pedig a foo( x:, y: )".
  • Az egysoros mintaegyezések stabilizált támogatása (ary => [x, y, z]), amelyek már nincsenek kísérletiként megjelölve.
  • A mintaegyezések "^" operátora mostantól tetszőleges kifejezéseket tartalmazhat, például: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Egysoros mintaegyeztetéseknél elhagyhatja a zárójeleket: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Az RBS típusú annotációs nyelv, amely lehetővé teszi a program felépítésének és a használt típusok meghatározását, támogatja a típusparaméterek felső határának megadását a „<” szimbólum segítségével, hozzáadta az általános típusok álneveinek támogatását, valamint a gyűjtemények drágakövek kezelésére, jobb teljesítmény és számos új aláírás bevezetése a beépített és szabványos könyvtárakhoz.
  • Az integrált fejlesztői környezetek kísérleti támogatásával bővült a TypePro statikus típusanalizátor, amely kódelemzésen alapuló RBS-annotációkat generál explicit típusinformáció nélkül (pl. elkészült egy kiegészítő a TypePro és a VSCode szerkesztő integrálásához).
  • A több feladat feldolgozásának sorrendje módosult. Például korábban a „foo[0], bar[0] = baz, qux” kifejezés összetevőit baz, qux, foo, bar sorrendben dolgozták fel, most viszont foo, bar, baz, qux.
  • Kísérleti támogatás hozzáadva a karakterláncok memóriafoglalásához a VWA (Variable Width Allocation) mechanizmus segítségével.
  • A beépített drágakő modulok frissített verziói és a szabványos könyvtárban szereplők. A net-ftp, net-imap, net-pop, net-smtp, mátrix, prime és debug csomagok be vannak építve.

Forrás: opennet.ru

Hozzászólás