Izdanje programskog jezika Ruby 3.1

Objavljen je Ruby 3.1.0, dinamički objektno orijentirani programski jezik koji je vrlo učinkovit u razvoju programa i uključuje najbolje značajke Perla, Jave, Pythona, Smalltalka, Eiffela, Ade i Lispa. Kôd projekta distribuira se pod licencama BSD ("2-clause BSDL") i "Ruby", što se odnosi na najnoviju verziju GPL licence i potpuno je kompatibilno s GPLv3.

Glavna poboljšanja:

  • Dodan je novi eksperimentalni JIT prevodilac u procesu, YJIT, koji su izradili programeri platforme za e-trgovinu Shopify kao dio inicijative za poboljšanje performansi Ruby programa koji koriste okvir Rails i pozivaju mnoge metode. Ključna razlika u odnosu na prethodno korišteni MJIT JIT prevodilac, koji se temelji na obradi cijelih metoda i koristi vanjski prevodilac u C jeziku, je da YJIT koristi Lazy Basic Block Versioning (LBBV) i sadrži integrirani JIT prevodilac. Uz LBBV, JIT prvo kompajlira samo početak metode, a ostatak kompajlira nešto kasnije, nakon što se tipovi varijabli i argumenata koji se koriste utvrde tijekom izvođenja. Pri korištenju YJIT-a zabilježeno je povećanje performansi od 22% pri izvođenju railsbench testa i povećanje od 39% u testu tekućeg renderiranja. YJIT je trenutno ograničen na podršku za operativne sustave slične unixu na sustavima s x86-64 arhitekturom i onemogućen je prema zadanim postavkama (za aktivaciju navedite oznaku “--yjit” u naredbenom retku).
  • Poboljšana izvedba starog MJIT JIT prevoditelja. Za projekte koji koriste Rails, zadana najveća veličina predmemorije (--jit-max-cache) povećana je sa 100 na 10000 1000 instrukcija. Prestao koristiti JIT za metode s više od XNUMX uputa. Za podršku Zeitwerk of Rails, JIT kod se više ne odbacuje kada je TracePoint omogućen za događaje klase.
  • Uključuje potpuno prerađen program za ispravljanje pogrešaka debug.gem, koji podržava daljinsko ispravljanje pogrešaka, ne usporava debugiranu aplikaciju, podržava integraciju s naprednim sučeljima za ispravljanje pogrešaka (VSCode i Chrome), može se koristiti za ispravljanje pogrešaka s više niti i višeprocesnih aplikacija, pruža sučelje za izvršavanje REPL koda, nudi napredne mogućnosti praćenja, može snimati i reproducirati isječke koda. Prethodno ponuđeni debugger lib/debug.rb je uklonjen iz osnovne distribucije.
    Izdanje programskog jezika Ruby 3.1
  • Implementirano vizualno isticanje pogrešaka u izvješćima praćenja povratnog poziva. Označavanje pogrešaka omogućeno je korištenjem ugrađenog i zadano omogućenog gem paketa error_highlight. Da biste onemogućili označavanje pogreške, možete koristiti postavku “--disable-error_highlight”. $ ruby ​​​​test.rb test.rb:1:in " ": nedefinirana metoda "vrijeme" za 1:Integer (NoMethodError) 1.time {} ^^^^^ Jeste li mislili? puta
  • Ljuska interaktivnih izračuna IRB (REPL, Read-Eval-Print-Loop) implementira automatsko dovršavanje unesenog koda (dok tipkate, prikazuje se savjet s opcijama za nastavak unosa, između kojih se možete kretati tipkom Tab ili Shift+ tipka tab). Nakon odabira opcije nastavka, u blizini se prikazuje dijaloški okvir koji prikazuje dokumentaciju povezanu s odabranom stavkom. Tipkovnički prečac Alt+d može se koristiti za pristup cijeloj dokumentaciji.
    Izdanje programskog jezika Ruby 3.1
  • Sintaksa jezika sada dopušta preskakanje vrijednosti u hash literalima i argumentima ključne riječi prilikom pozivanja funkcija. Na primjer, umjesto izraza “{x: x, y: y}” sada možete navesti “{x:, y:}”, a umjesto “foo(x: x, y: y)” - foo( x:, y: )".
  • Stabilizirana podrška za jednolinijska podudaranja uzoraka (ary => [x, y, z]), koja više nisu označena kao eksperimentalna.
  • Operator "^" u podudaranju uzoraka sada može sadržavati proizvoljne izraze, na primjer: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • U podudaranju uzoraka u jednom retku, možete izostaviti zagrade: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Jezik označavanja tipa RBS, koji vam omogućuje određivanje strukture programa i korištenih tipova, ima dodanu podršku za određivanje gornje granice parametara tipa pomoću simbola “<”, dodanu podršku za pseudonime generičkih tipova, implementiranu podršku za zbirke za upravljanje draguljima, poboljšana izvedba i implementirani mnogi novi potpisi za ugrađene i standardne biblioteke.
  • Analizatoru statičkih tipova TypePro dodana je eksperimentalna podrška za integrirana razvojna okruženja koja generira RBS anotacije na temelju analize koda bez eksplicitnih informacija o tipu (primjerice, pripremljen je dodatak za integraciju TypePro-a s VSCode editorom).
  • Promijenjen je redoslijed obrade više zadataka. Na primjer, prethodno su se komponente izraza “foo[0], bar[0] = baz, qux” obrađivale redom baz, qux, foo, bar, ali sada foo, bar, baz, qux.
  • Dodana je eksperimentalna podrška za dodjelu memorije nizovima pomoću mehanizma VWA (Variable Width Allocation).
  • Ažurirane verzije ugrađenih gem modula i onih uključenih u standardnu ​​biblioteku. Ugrađeni su paketi net-ftp, net-imap, net-pop, net-smtp, matrix, prime i debug.

Izvor: opennet.ru

Dodajte komentar